javascript - knockout 组件绑定(bind)属性错误

标签 javascript jquery knockout.js knockout-components

我想动态添加属性 id 到标签,但它给出了错误

"Uncaught ReferenceError: Unable to process binding "attr: function (){return {id:id} }" Message: id is not defined"

我的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>

我的 View 模型-

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} 仍然给出错误。任何人都可以帮助我吗?

最佳答案

在看不到更多 HTML 内容的情况下(因此假设您的 HTML 包含在针对 listrows.item 数组的 foreach 中),id 属性包含在您的 params 对象中,因此为了引用它,您需要指定 params.id:

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

编辑:基于评论:

above is my full html. I just want to add id to first span...

在这种情况下,您需要访问 View 模型的值本身。您不能仅调用 id,因为您的 View 模型没有自己的 id 属性。相反,您需要使用以下方式访问它:

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

这假设您只想访问 listrowsitems 数组的第 0th 索引。

关于javascript - knockout 组件绑定(bind)属性错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25931498/

相关文章:

javascript - 如何从数组中获取值,其中包含一些带有lodash angular 4的值

javascript - 从 Qualtrics 页面删除 "Next"按钮

javascript - 如何使点击的元素突出显示?

javascript - 将 knockoutjs 绑定(bind)到 javascript 对象属性

javascript - 使用 foreach knockout 渲染复选框

javascript - 在 Knockout View 模型定义之外设置属性值

javascript - 无法发送到特定房间和客户端(Socket.io 2.0.2)

jQuery 隐藏显示 div 在 Internet Explorer 中不起作用

javascript - 在同一事件的所有 Controller 中执行相同的函数 - AngularJS

javascript - Android 喜欢状态栏吗?