在Angularjs中自动执行函数

时间:2014-04-24 08:13:23

标签: angularjs

我想让这个功能自动执行,但不能正常工作。

    $scope.checkdate = function(){
    $scope.checked = 0;
    $scope.unchecked = 0;
    for(var i = 0; i < $scope.inventories.length; i++) {
        if($scope.inventories[i].modified === $scope.time){
            $scope.checked = $scope.checked + 1;
        }else if($scope.time2 !== $scope.time){
            $scope.unchecked = $scope.unchecked + 1;
        }
    }
};
$scope.checkdate();

我的模板看起来像这样:

<ul ng-init="checkdate()">
        <li><input type="checkbox" /> Checked {{checked}}</li> 
        <li><input type="checkbox" /> Unchecked {{unchecked}}</li>
        <li><input type="checkbox" />   All</li>
</ul>

1 个答案:

答案 0 :(得分:1)

首先,从Angular's documentation关于ng-init

  

ngInit的唯一合适用途是用于别名ngRepeat

的特殊属性

所以你不应该在你的例子中使用它。

其次,您的init函数不应附加到$scope,因为不需要它。它应该是控制器的私有功能。

第三,我们无法看到控制器的定义。很可能你没有创建一个因此 - Angular不会关心代码的其余部分。

第五,如果你想用一个例子创建一个JS Fiddle,你很快就会收到回复:)

无论如何,您的代码应该看起来像这样(样板文件)。应该帮助你。

HTML模板:

<ul ng-controller="MyController">
        <li><input type="checkbox" /> Checked {{checked}}</li> 
        <li><input type="checkbox" /> Unchecked {{unchecked}}</li>
        <li><input type="checkbox" />   All</li>
</ul>

MyController.js

function MyController() {
    $scope.checked = 0;
    $scope.unchecked = 0;

    // Define what needs to be done during initialization below.
    function init() {
       // I haven't checked your code but there are some uninitialized variables in there like $scope.inventories....
       for(var i = 0; i < $scope.inventories.length; i++) {
           if ($scope.inventories[i].modified === $scope.time){
               $scope.checked = $scope.checked + 1;
           } else if ($scope.time2 !== $scope.time){
               $scope.unchecked = $scope.unchecked + 1;
           }
       }
    }

    init(); // Call your private init function here.
}