我想通过Object中的属性将$scope.data
传递给指令,我可以使用任何解决方案实现以下格式,但不能通过分隔属性实现吗?
<custom-directive detail="{index:1, data: {{data}}}">
</custom-directive>
范围在指令
中设置如下scope: {detail: "="}
答案 0 :(得分:0)
一种解决方案可能是
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>
答案 1 :(得分:0)
您仍然可以在控制器中创建对象的解决方案:
$scope.detail = {index:1, data:$scope.data};
并将其交给你的指令:
<custom-directive detail="detail"></custom-directive>
答案 2 :(得分:0)
您只需在对象中写入数据,它将自动从您的控制器中解析。请按以下步骤操作:
<强> 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));
}
}
});