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">