在两个指令中绑定共享服务

时间:2013-09-03 07:10:21

标签: angularjs angularjs-scope

我想要完成的是绑定两个指令抛出一个共享服务,这样当其中一个更改时,更改会立即传播到另一个。

我的指示如下:

app.directive("input1", function (sharedService) {
    return  {
        restict: 'A',
        scope: 'isolate',
        template: '<input type="text" ng-model="sharedText" class="input-medium" />{{sharedText}}',
        link: function (scope, elem, attrs) {
            scope.sharedText = sharedService.sharedText; // Service never gets updated if the scope it's modified :(
        }
    }
});

app.directive("input2", function (sharedService) {
    return  {
        restict: 'A',
        scope: 'isolate',
        template: '<input type="text" ng-model="sharedText" class="input-medium" />{{sharedText}}',
        link: function (scope, elem, attrs) {
            scope.sharedText = sharedService.sharedText;
        }
    }
});

在这里你可以看到我到现在为止的一个小提琴:http://jsfiddle.net/Hubrus/kxGG6/1/

谢谢!

1 个答案:

答案 0 :(得分:2)

由于代码的原型性质,您需要使用.符号或对象。直接字符串绑定在当前作用域上创建一个新的字符串值。

请参阅此小提琴http://jsfiddle.net/TAhfb/2/