AngularJS指令属性中的非字符串类型
我想创建一个属性窗格,其中属性的数量可以根据选择的对象而有所不同 我通过自己的名为AngularJS指令属性中的非字符串类型,angularjs,Angularjs,我想创建一个属性窗格,其中属性的数量可以根据选择的对象而有所不同 我通过自己的名为property的指令创建了一个属性,它显示属性的名称和值,代码如下: <div ng-app="MyApp"> <div class="properties-pane" ng-controller="PropertiesPane"> <div ng-repeat="property in properties"> <property name="{
property
的指令创建了一个属性,它显示属性的名称和值,代码如下:
<div ng-app="MyApp">
<div class="properties-pane" ng-controller="PropertiesPane">
<div ng-repeat="property in properties">
<property name="{{property.name}}" value="{{property.value}}">
</div>
</div>
</div>
由于字符串上未定义值.x、y和z,结果当然是:
首先,第二,
第三, 我想要的输出是: 第一个0,0,42
第二个0,20,0
第三个1,1,1 我怀疑我对如何以编程方式添加元素的想法存在根本性的错误。用什么样的方式来实现这样的事情 编辑:解决方案 要通过引用将
值
引用为对象而不是字符串值,请在指令中使用=
而不是@
:
scope: {name: '@', value: '='}
在模板中:
<property name="{{property.name}}" value="property.value">
注意,我删除了
{{}
关于name='property.name'
和scope:{name:'=',value:'=}
这应该很神奇
要了解更多信息,请查看并搜索(ctrl+f)中的“@”,第一个结果就是您想要的结果;) 这将为该指令创建一个独立的作用域,这有时是不希望的效果。我认为您的意思是:作用域:{name:'@',value:'=name'}这将把字符串名称放在'name'散列中,而值放在'value'散列中。这是可行的,但会设置一个双向绑定,很像“按引用传递”而不是“按值传递”因此,请注意:如果指令控制器等更改了该值,它将修改父范围对象。
<property name="{{property.name}}" value="property.value">