以下是代码:
<html>
<head>
<script type='text/javascript'>
var myAppModule = angular.module('myApp', []);
myAppModule.factory('studentFactory', function (){
// The whole factory goes here.
});
myAppModule.controller('studentsController', ['$scope', 'studentFactory', function ($scope, studentFactory){
$scope.students = [];
studentFactory.getStudents(function (data){
$scope.students = data;
});
studentFactory.removeStudent(function (data){
alert('test');
$scope.students = data;
});
}])
</script>
</head>
<body ng-app='myApp'>
...
</body>
</html>
页面加载时会触发alert('test')
。我该如何解决?请不要在代码中解决问题,我只是在努力。
以下是Plunker中的代码:https://plnkr.co/edit/u7c13AIdKPjmdkzRUPXd?p=preview
答案 0 :(得分:0)
这是因为您在实例化时调用控制器中的函数removeStudents。如果您希望它在触发前等待某个事件,则需要将其绑定到事件。例如,您可以将其包装在某些点击功能中,如下所示:
$scope.whenIClickMyButton = function () {
studentFactory.removeStudent(function (data){
alert('test');
$scope.students = data;
});
}
<button ng-click="whenIClickMyButton()">Click Me</button>
并添加为click事件。现在,每次实例化控制器时它都会触发,因为你每次都会调用它。