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

时间:2016-12-30 14:54:21

标签: javascript angularjs controller 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];
    };

}]);

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

对我有任何暗示吗?

此致 n00n

1 个答案:

答案 0 :(得分: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;
}]);

我希望您在使用ng-controller指令时已经定义了控制器别名,如果您还没有使用它,请按照以下步骤操作。

ng-controller="DataController as dataCtrl"

ng-repeat="n in dataCtrl.getObjects()"

正如您所看到的那样,您应该在ng-repeat中调用getObjects()方法来获取方法中的数组。