AngularJS中具有隔离范围的两个指令之间的通信

时间:2015-02-17 15:22:26

标签: angularjs angularjs-directive angularjs-scope

我用隔离范围创建了两个指令。 当我在同一个DOM元素中包含两者时:

<div directive-one="" type-message="setMessageError" directive-two="">

我明显遇到以下错误:

要求新/隔离范围的多指令[directiveOne,directiveTwo]:

app.directive('directiveOne',function () {
    return {
        scope: {
            typeMessage: "=",
        },
    };
}]);


app.directive('directiveTwo', function () {    
        return {
            templateUrl: 'template.html',
            controller: function($scope) {$scope.setMessageError="error";}
            restrict: 'A',
            scope: {
                someScope: "="
            },

        };
    });

有没有办法通过directiveTwo的控制器从directiveTwo设置属性 typeMessage ,如下面的示例所示。

1 个答案:

答案 0 :(得分:-1)

您可以实现第一个没有隔离范围的指令,只需要一点额外的努力:

app.directive('directiveOne', [function () {
    return {
        link: function(scope, elem, attrs) {
            scope.$watch(attrs.typeMessage, function(newval) {
                // react to changes
            };
        }
    };
}]);

此代码将type-message的值视为 Angular表达式并对其进行监视,即等效的硬编码监视为scope.$watch('setMessageError', ...)