Я учусь директивы AngularJS, и одна вещь, которую я хочу сделать, это пройти в материнской scope
(а scope
из controller
) некоторую переменную $scope.message
, и я хочу, чтобы это было переименовано в param
внутри directive
alert
. Я могу сделать это с помощью изолированной сферы:Pass переменной AngularJS директивы без изолированного объема
<div alert param="message"></div>
и определить
.directive("alert", function(){
return{
restrict: "A",
scope: {
param: "="
},
link: function(scope){
console.log(scope.param) # log the message correctly
}
}
})
Но я могу сделать это без использования изолированной сферы? Предположим, я хочу добавить еще directive
toast
в <div toast alert></div>
и использовать тот же param
(сохраняя 2-полосная привязки данных), по наивности я сделаю
.directive("toast", function(){
return{
restrict: "A",
scope: {
param: "="
},
link: function(scope){
console.log(scope.param)
}
}
})
Я, конечно, получите ошибку Multiple directives [alert, toast] asking for new/isolated scope on:<div...
Так в целом, мой вопрос заключается в том, как переименовать родительскую переменную области без изолированной области и как обмениваться переменными, когда два directives
размещены на одном DOM
?
Вы хотите, чтобы 2 директивы связывались с одним и тем же родительским свойством '$ scope'? –