当用户点击我的应用程序中的按钮时,我尝试编译这样的指令并发送单击指令的文档(复杂的json对象)
$scope.displayBlah = function(event, document){
$scope.doc = document;
$(event.currentTarget.parentElement).prepend($compile('<show-blah mydata={{doc}}/>')($scope));
}
在指令代码中,我想访问该对象的各个属性,但我只能显示整个对象,而无法使用点表示法来获取属性。例如,这显示了整个复杂对象
{{mydata}}
但我不能得到像这样的任何个人财产
{{mydata.property}}
这就是我的工作
myApp.directive('showBlah', function(){
return {
restrict: 'AE',
scope: {
mydata: '@'
}
replace: true,
template: <div class='root'>{{mydata}} {{mydata.property}}</div>,
link: ///code ommitted
问题:是否可以在这样的指令中访问对象内的属性?
{{mydata.property}}
答案 0 :(得分:1)
您在此使用@
会将传入的值转换为字符串:
scope: {
mydata: '@'
}
这解释了为什么{{mydata}}
有效(只显示一个字符串),但{{mydata.property}}
没有(字符串不具有property
)。
使用=
代替(并在指令调用中省略{{ }}
)。