我有一个标志我设置为true / false,这会改变页面上某些项目的显示方式。我遇到了一些麻烦,将价值纳入我的模板并让它真正起作用。普通的HTML(不在模板内)工作正常。
restrict: 'E',
scope: {
speedDirection: "@",
speedName: "@",
value: "@",
editElements: "="
},
template:
'<div>'+
'<p class="body-text">{{speedDirection}} '+
'<input type="text" name="{{speedName}}" value="{{value}}" ng-show="editElements">'+
'<span ng-hide="editElements">{{value}}</span>'+
'</p>'+
'</div>',
我想使用editElements的动态模型值,而不仅仅是传递的值。这样,当它改变时,它将反映所显示模板中的更新。变量在我存储测试数据的对象中定义:
function MyObject($scope) {
$scope.editElements = true;
有什么方法可以让它发挥作用吗?我尝试使用“@”和{{editElement}}位等传递它(如上所述)。自定义HTML部分:
<speed-limit speed-direction="A to B:"
speed-name="reverse"
value="{{newObject.speedLimit[0]}}"
editElement="editElements">
</speed-limit>
更新:我已经安装了Batarang,它显示了我的自定义元素(速度限制)的特定部分,以便“editElement:null”。但是,引用的其他区域editElements已正确设置。这是一些奇怪的范围问题吗?
答案 0 :(得分:2)
正如评论中所讨论的,同名可以用于属性的名称,但它必须是蛇形的,因此edit-elements =“editElements”:
<speed-limit speed-direction="A to B:"
speed-name="reverse"
value="{{newObject.speedLimit[0]}}"
edit-elements="editElements">
</speed-limit>
不要为此感到难过......我认为每个Angular开发人员都至少浪费了一个小时(或更长时间)的生命。