我有一个名为 PostController 和 CommentController 的 Controller
PostController 具有函数 showPost
CommentController 具有函数 showComment
我想在单击按钮时执行这两个功能
<button href="#" ng-click="showPost();showComment()" class="btn">show</button>
如何在不指定嵌套 Controller 概念的情况下做到这一点
最佳答案
您可以通过使用服务/工厂来实现这一点。这是它应该如何工作的简单示例:
JS
var myApp = angular.module('myApp', []);
function CommentController($scope, myStorage) {
$scope.myStorage = myStorage;
$scope.showMe = function(){
myStorage.setIndex(3);
}
}
function PostController($scope, myStorage) {
$scope.myStorage = myStorage;
}
myApp.factory('myStorage', function () {
var currentBusinessIndex = 0;
return {
getIndex: function () {
return currentBusinessIndex;
},
setIndex: function (index) {
currentBusinessIndex = index;
}
}
});
HTML
<div ng-controller="CommentController">
<button ng-click="showMe();">press me</button>
<pre>{{myStorage.getIndex()}}</pre>
</div>
<div ng-controller="PostController">
<pre>{{myStorage.getIndex()}}</pre>
</div>
演示 Fiddle
此外,您可以使用$watch
监视服务数据,以在任何数据更改时触发
关于angularjs - ng-click执行属于不同 Controller 的2个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20878277/