在控制器中使用' var'但作为控制器中的范围引用

时间:2014-12-07 22:54:57

标签: javascript angularjs angularjs-scope angularjs-ng-repeat

我正在实施一个名为ngTable的模块,您可以找到here

In the 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.resolve进行更多研究?

1 个答案:

答案 0 :(得分:1)

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