在控制器中声明的变量,带有“var”,但在控制器中引用为范围

Variable declared in controller with 'var' but referenced as scope in the controller

本文关键字:控制器 范围 引用 带有 声明 变量 var      更新时间:2023-09-26

我正在实现一个名为ngTable的模块,你可以在这里找到。

例如,在 plunker 中,控制器中的以下内容引起了我的注意:

在控制器中声明一个变量:

var data = [{name: "Moroni", age: 50}, ....

稍后在控制器中引用数据

$scope.tableParams = new ngTableParams({
    page: 1,            // show first page
    count: 10           // count per page
}, {
    total: data.length, // length of data
    getData: function($defer, params) {
        $defer.resolve(data.slice((params.page() - 1) * params.count(), params.page() * params.count()));
    }
});

在视图中,数据在 ngRepeat 中使用 $ 前缀引用:

    <tr ng-repeat="user in $data">
        <td data-title="'Name'">{{user.name}}</td>
        <td data-title="'Age'">{{user.age}}</td>
    </tr>

即使数据未声明为范围变量,视图如何识别数据?我错过的这个ngTableParams发生了什么?

也许我需要对$defer决心做更多的研究?

看看

https://github.com/esvit/ng-table/blob/master/ng-table.js#L411,ngTable有一个控制器$scope的引用,并向其添加$data