在Angularjs中自动执行函数

在Angularjs中自动执行函数,angularjs,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.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();
$scope.checkdate=function(){
$scope.checked=0;
$scope.unchecked=0;
对于(变量i=0;i<$scope.inventory.length;i++){
if($scope.inventory[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>
  • 选中{{Checked}}
  • 未选中{Unchecked}
  • 全部
首先,从about
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>

您可以删除ng init=“checkdate()”,因为它已经在控制器内部调用。它没有回答以下问题:与上述$scope关联的控制器是否正在实例化?您知道
$scope.inventory.length
大于0吗?虽然您的示例似乎有点不完整,但从表面上看,您正在尝试的操作应该是可行的。+1
ng init
可能更适合命名为类似
ng repeat init
或其他名称。似乎每个人都想误用它,尽管文档的用意很好:)是的,我广泛地使用它是为了不好的目的:D这部分是因为旧版本的文档没有正确地描述它。
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.
}