2014-09-04 23 views
0

在角度js中呈现init()方法从控制器初始化时间调用和从HTML页面调用之间的区别是什么?从控制器初始化调用初始化函数和从页面呈现角度js中的HTML页面之间的区别

HTML部分:

<div ng-init="init()"> 
    --- 
    --- 
</div> 

控制器:

angular.module('masterJs') 
    .controller('SignupCtrl', function ($scope, $rootScope) { 

     $scope.init(){ 
      //code here 
     } 

    }); 

这里我打电话的init()从部分方法。就是当我们调用的init()从控制器不能从HTML页面类似的区别:

angular.module('masterJs') 
     .controller('SignupCtrl', function ($scope, $rootScope) { 

      $scope.init(){ 
       //code here 
      } 


      $scope.init(); 
     }); 

回答

1

区别在于,如果HTML中有ng-init,则只会在页面的实际呈现过程中调用init()函数。如果出于任何原因需要重新呈现内容,则将再次调用init()函数。

当您在控制器上调用init()函数时,它只会运行一次(创建控制器时)。根据angular's documentation,这是最佳做法(避免使用ng-init)。

1

通常使用NG-初始化为intitializing一个NG重复。

ngInit的唯一适当的用法是用于别名ngRepeat的特殊属性,如下面的演示所示。除了这种情况,您应该使用控制器而不是ngInit来初始化作用域上的值。

例子:

<script> 
angular.module('initExample', []) 
    .controller('ExampleController', ['$scope', function($scope) { 
    $scope.list = [['a', 'b'], ['c', 'd']]; 
    }]); 
</script> 
<div ng-controller="ExampleController"> 
<div ng-repeat="innerList in list" ng-init="outerIndex = $index"> 
    <div ng-repeat="value in innerList" ng-init="innerIndex = $index"> 
    <span class="example-init">list[ {{outerIndex}} ][ {{innerIndex}} ] = {{value}};</span> 
    </div> 
</div> 
</div> 

您使用的是INIT功能的方式,是不恰当的。