Я хочу передать $scope.data
для директивы через свой атрибут в объекте, могу ли я получить ниже формат с любым решением, но не через отдельный атрибут?
<custom-directive detail="{index:1, data: {{data}}}">
</custom-directive>
И область действия указана ниже в директиве
scope: {detail: "="}
У вас все еще есть решение создать свой объект в контроллере:
$scope.detail = {index:1, data:$scope.data};
и привести его в свою директиву:
<custom-directive detail="detail"></custom-directive>
Одним из решений может быть
return {
restrict: 'E',
require: 'ngModel',
scope: {
model: '=ngModel',
},
link: function(scope, element, attributes, ngModel) {
if (!ngModel) {
return;
}
console.log(scope.model); // your passed data
}
}
а потом
<custom-directive ngModel="data"></custom-directive>
Теперь у вас будет ваша $scope.data
переданная директиве внутри scope.model
. Но учтите, что любое изменение scope.model
в директиве будет отражено в $scope.data
тоже.
Чтобы этого избежать, вы можете просто изменить ngModel
.
return {
restrict: 'E',
scope: {
data: '=myData',
},
link: function(scope, element, attributes) {
console.log(scope.data); // your passed data
}
}
а потом
<custom-directive my-data="data"></custom-directive>
Вы просто записываете данные только в свой объект, он автоматически будет устранен с вашего контроллера. Сделайте следующее:
HTML
<custom-directive detail="{index:1, data: data}">
</custom-directive>
директива
myApp.directive('customDirective', function() {
return {
restrict:"AE",
scope:{
detail:"="
},
link:function(scope,ele,attrs) {
alert(JSON.stringify(scope.detail));
}
}
});