为什么我的控制器方法不可用?

n00*_*00n 2 javascript controller angularjs angularjs-controller angularjs-controlleras

很长一段时间后,我不得不再集中一个角.但我失败了......

... ng-repeat ="在DataController.getObjects中的n"

myApp.controller('DataController', [function () {

    console.log('test 1');

    var getObjects = function () {
        console.log('test 2');
        return [1,2,3,4,5,6,7];
    };

}]);
Run Code Online (Sandbox Code Playgroud)

它将测试1写入控制台但不测试2.并且前端没有得到阵列.

有什么暗示吗?

问候n00n

Pan*_*kar 5

您必须在控制器的页面(上下文)上公开method/ variable要访问它this.因此,您可以通过控制器别名访问该方法/变量,因为您似乎正在使用controllerAs模式.

myApp.controller('DataController', [function () {
    var self = this;
    console.log('test 1');
    var getObjects = function () {
        console.log('test 2');
        return [1,2,3,4,5,6,7];
    };

    self.getObjects = getObjects;
}]);
Run Code Online (Sandbox Code Playgroud)

我希望你在使用ng-controller指令时已经定义了控制器别名,如果你还没有使用它,请按照下面的说明操作.

ng-controller="DataController as dataCtrl"

ng-repeat="n in dataCtrl.getObjects()"
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,你应该调用方法ng-repeat一样getObjects()摆脱方法的数组.