2016-06-21 255 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> 
相關問題