2014-04-24 3 views
0

이 함수를 자동으로 실행하고 작동 시키길 원합니다. 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(); 

그리고 내 템플릿은 다음과 같습니다 Angular's documentation에서 모든

<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> 
+0

당신은 NG-INIT = 제거 할 수 있습니다 "checkdate()"를 이후 이미 컨트롤러 내부라고. 그래도 질문에 답하지 않습니다 – thedjaney

+1

위의 $ 범위와 연결된 컨트롤러가 인스턴스화 되었습니까? '$ scope.inventories.length'가 0보다 큰 것을 알고 있습니까? 예제가 약간 불완전한 것처럼 보이지만, 표면에서 당신이하려는 것은 효과가 있습니다. –

답변

1

먼저, 약 ng-init :

ngInit의 유일한 적절한 사용은 ngRepeat

의 특별한 속성을 앨리어싱입니다

귀하의 예에서 그것을 사용해서는 안됩니다.

두 번째로 init 함수는 필요 없기 때문에 $scope에 연결하면 안됩니다. 컨트롤러의 개인 기능이어야합니다.

세 번째로 컨트롤러의 정의를 볼 수 없습니다. 하나를 만들지 않았으므로 Angular가 나머지 코드를 신경 쓰지 않을 것입니다. 당신이 상관없이 예 :

와 JS 바이올린을 만든 것, 당신의 코드는이 (보일러)처럼 보일 것이다 경우 모든

다섯째, 당신은 시간에 응답을 얻을 것입니다. 너를 도와 줘야 해.

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. 
} 
+0

+1'ng-init'은'ng-repeat-init' 또는 다른 어떤 것으로 더 잘 명명되었을 수도 있습니다. 문서의 좋은 의도에도 불구하고 그것을 잘못 사용하려고하는 것 같습니다. –

+0

그래, 나는 그것을 악의적 인 용도로 광범위하게 사용하고 있습니다 : D 이것은 이전 버전의 문서에서 제대로 설명되지 않았기 때문에 부분적으로입니다. –

관련 문제