knockout组件绑定属性错误

时间:2014-09-19 10:12:16

标签: javascript jquery knockout.js knockout-components

我想动态地将属性id添加到标记但是它给出了错误

  

"未捕获的ReferenceError:无法处理绑定" attr:function(){return {id:id}}"   消息:id未定义"

我的HTML -

<label data-bind="text:label"></label>
<span class="name" data-bind="attr:{id:id},html:value"></span>
<span class="cancelled" data-bind="html:cancel"></span>
<span class="currency-block" data-bind="html:amount"></span>

我的观点模型 -

this.listrows = [
            {layout:'basic', params:{icon:'icon-phone', items:[
            {item:'content', type:'basic', params:{id:'test', label:'From Account',value:'asuhdas'}}
            ]}},

            {layout:'basic', params:{icon:'icon-money', items:[
            {item:'content', type:'basic', params:{label: 'To Account:', value:''}}
            ]}}
]

我添加了attr:{id:id}仍然给出错误。任何人都可以帮助我。

1 个答案:

答案 0 :(得分:1)

如果没有看到更多HTML(因此假设您的HTML包含在foreach数据中的listrows.item),id属性就包含在params中对象,因此为了引用它,您需要指定params.id

<span class="name" data-bind="attr: {id: params.id }, html: params.value"></span>

修改:根据评论:

  上面的

是我的完整HTML。我只是想在第一个跨度中添加id ...

在这种情况下,您需要访问viewmodel的值本身。由于您的视图模型没有自己的id属性,因此您无法仅调用id。相反,您需要使用以下方式访问它:

attr: { id: listrows[0].items[0].params.id }

这假设您只想访问0thlistrows数组的items索引。