我有以下代码,似乎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="angular.js@1.5.6" 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>
我刚刚开始我的Angular旅程,所以关于为什么会发生这种情况的任何信息都会很棒,因为我似乎无法在网上找到任何东西。
答案 0 :(得分:2)
我认为您使用ng-click而不是ng-checked。
查看文档:{{3}}
ngChecked是一个布尔参数,而不是一个函数。
如果ngChecked中的表达式是真实的,则在元素上设置checked属性。
答案 1 :(得分:0)
ngChecked可以将一个函数作为一个参数,只要该函数返回一个真实或伪造的值,如下所示:
const isGreaterThanOne = x => x > 1;
<body ng-app="app" ng-controller="loginCtrl">
<input type="checkbox" ng-checked="isGreaterThanOne(2)" ng-model="tester" />
</body>