Мы имеем следующий директиву внедрен:Angularjs связывание приоритета
angular.module('app', [])
.directive('dIsolatedWorks', function() {
return {
scope: {
prop: '='
},
template: '<span>{{name}}: {{prop}}</span>',
link: function(scope) {
scope.name = 'isolated';
scope.prop = 'link';
}
};
})
.directive('dIsolated', function() {
return {
scope: {
prop: '@'
},
template: '<span>{{name}}: {{prop}}</span>',
controller: function($scope) {
$scope.prop = 'controller';
},
link: function(scope) {
scope.name = 'isolated';
scope.prop = 'link';
}
};
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app">
<div d-isolated-works prop="attribute"></div>
<div d-isolated prop="attribute"></div>
</div>
На самом деле в процессе реализации, я был уверен, что назначение на scope.prop
поля изменит переменное, и она будет отображаться как 'link'
, не 'attribute'
. Но в настоящее время мы видим, что реальное значение будет isolated: attribute
. Однако его можно просто устранить, изменив назначение строки на назначение объекта.
Можете ли вы объяснить такое поведение?
Работа с атрибутом как параметр не является параметром, как при использовании оператора @ i t определяется как строка, но не переменная. Фактически параметры не могут быть назначены после компоновки, так как вы можете свободно работать с ними в блоке связывания. Проблема в том, что значение prop переназначается каким-то образом – nesteant