我用隔离范围创建了两个指令。 当我在同一个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 ,如下面的示例所示。
答案 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', ...)
。