通过观察API对象来调用指令的方法,如何识别指令实例?

时间:2016-04-15 19:13:37

标签: angularjs angular-directive

我想提供指令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()方法都会被触发?

  1. 我该如何解决这个问题?

  2. API对象是提供指令API的好模式吗?

  3. 由于

1 个答案:

答案 0 :(得分:0)

将服务对象指定为范围属性并没有错,控制器变得更薄,更容易测试。

但是这个

function updateUsername () {
    ctrl.username = greetingApi.username;
}

反对这个概念。

greetingApi应该作为模型和单一事实来源,它已经暴露在范围内,并且可以{{ api.username }}绑定。