如何在不使用“scope:false”的情况下在另一个模块中与指令共享作用域?

时间:2016-10-31 22:02:07

标签: angularjs

我有2个模块,jsTagmainAppmainApp注入jsTag以使用它的功能

var jsTag = angular.module('jsTag')
angular.module('mainApp', ['jsTag']);

jsTag模块有一个我将调用jsTagDirective

的指令
jsTag.directive('jsTagDirective', function(){
restrict: 'E',
scope: true,
controller: 'jsTagMainCtrl',
templateUrl: 'jsTag/source/Templates/js-tag.html'

上述指令的模板中包含input标记,ng-model引用jsText。我希望能够在我的mainApp模块的控制器中捕获此模型的值。将范围更改为false确实有效 - 我可以访问mainApp中的$scope.jsText - 但我知道这是不好的做法。但是,我无法弄清楚如何获取继承范围或隔离范围以向上传递值。

1 个答案:

答案 0 :(得分:0)

这是一个完美的例子,为什么你应该使用孤立的范围和双向绑定。 Docs here.

JS

jsTag.directive('jsTagDirective', function () {
    return {
        restrict: 'E',
        scope: {
            jsText: '='
        },
        controller: 'jsTagMainCtrl',
        templateUrl: 'jsTag/source/Templates/js-tag.html'
    };
});

HTML

<js-tag-directive js-text="jsText"></js-tag-directive>

这将使指令使其jsText属性与父作用域同步,甚至创建所述属性。