我想提供指令API,以便指令可以相互通信。我正在使用API对象和$ watch来实现它。以下是我的例子
http://plnkr.co/edit/n1dVBzRkaJucFjZD48ny?p=preview
function GreetingController($scope, greetingApi) {
var ctrl = this;
$scope.api = greetingApi;
$scope.$watch('api.username', updateUsername);
function updateUsername () {
ctrl.username = greetingApi.username;
}
}
指令"问候"观看服务" greetingApi"。如果" greetingApi.username"更改后,将调用greeting指令的updateUsername()方法。
问题是如果页面中有多个greeting指令,那么所有指令的updagteUsername()方法都会被触发?
我该如何解决这个问题?
API对象是提供指令API的好模式吗?
由于
答案 0 :(得分:0)
将服务对象指定为范围属性并没有错,控制器变得更薄,更容易测试。
但是这个
function updateUsername () {
ctrl.username = greetingApi.username;
}
反对这个概念。
greetingApi
应该作为模型和单一事实来源,它已经暴露在范围内,并且可以{{ api.username }}
绑定。