我有以下控制器代码:
applicationControllers.controller('PostsController', ['$scope', '$http', function
($scope, $http) {
var page = 1;
$scope.init = function() {
this.loadPage(page);
}
$scope.nextPage = function() {
page++;
this.loadPage(page);
}
$scope.previousPage = function() {
page--;
if (page <= 0) { page = 1 }
this.loadPage(page);
}
$scope.filterByProvince = function(provinceName) {
console.log(provinceName);
}
$scope.loadPage = function(page) {
$http.get('/posts.json?page=' + page).success(function(data) {
$scope.posts = data;
});
}
$scope.init();
}]);
问题是当使用ng-click指令filterByProvince(&#39; test&#39;)时,似乎也调用了init函数。我想避免这种行为。
任何帮助?
答案 0 :(得分:1)
在Angular中,如果您想要<a>
元素显示为<a>
元素,但使用方式不同(例如作为按钮(通过附加一些ngClick
指令)),应该使用空的href
:
<a href="" ng-click="doSomething()">Do something</a>
使用href="#"
的问题在于它是:
由ngRoute
(如果使用)识别为&#34;链接&#34;到主路线('/'
),所以即使你在那条路线上它也会被重新加载,导致ngClick
回调的效果无效或
浏览器将其识别为同一页面的锚标记链接,因此单击它会导致页面重新加载(再次排除ngClick
回调的任何影响。)
<子>
我不确定ui-router
如何处理这个问题,但我不是ui-router
的忠实粉丝 - 也许有经验丰富的人可以提供一些反馈。
子>