2016-06-21 252 views
0

我有下面的代码,看起来好像ng-checked在页面加载时触发我的简单警报方法两次。为什么ng-checked在页面加载时触发两次

(function() { 
 
    'use strict'; 
 

 
    angular.module('app', ['common.ajax']); 
 
    angular.module('common.ajax', []); 
 

 
    angular 
 
    .module('app') 
 
    .controller('loginCtrl', controller); 
 

 
    controller.$inject = ['$scope', 'ajaxFactory']; 
 

 
    function controller($scope, ajaxFactory) { 
 
    $scope.alertme = activate; 
 

 
    function activate() { 
 
     ajaxFactory.getData(); 
 
    } 
 
    } 
 

 
    angular 
 
    .module('common.ajax') 
 
    .factory('ajaxFactory', factory); 
 

 
    factory.$inject = ['$http']; 
 

 
    function factory($http) { 
 
    var service = { 
 
     getData: getData 
 
    }; 
 

 
    return service; 
 

 
    function getData() { 
 
     alert("click me"); 
 
    } 
 
    } 
 
})();
<script data-require="[email protected]" data-semver="1.5.6" src="https://code.angularjs.org/1.5.6/angular.min.js"></script> 
 

 
<body ng-app="app" ng-controller="loginCtrl"> 
 
    <input type="checkbox" ng-checked="alertme()" ng-model="tester" /> 
 
</body>

我只是在我的角度旅程开始了等等为什么发生这种情况将是巨大的,因为我似乎无法找到特定的在线任何东西任何信息。

+0

它的射击两次,因为消化循环将运行至少两次。 [见这里](https://www.sitepoint.com/understanding-angulars-apply-digest/)。因为'ng-change'或'ng-click'下面的答案就是你要找的。但我更喜欢更改处理程序。 – AWolf

回答

0

ngChecked可以采取功能设置了一个param这么久,函数返回,就像这样truthy或falsy值:

const isGreaterThanOne = x => x > 1; 

<body ng-app="app" ng-controller="loginCtrl"> 
    <input type="checkbox" ng-checked="isGreaterThanOne(2)" ng-model="tester" /> 
</body> 
相关问题