C# 如何使用knockout js指定name属性
我有一个使用knockoutjs/mvc3的绑定列表C# 如何使用knockout js指定name属性,c#,asp.net-mvc-3,knockout.js,C#,Asp.net Mvc 3,Knockout.js,我有一个使用knockoutjs/mvc3的绑定列表 <div data-bind="foreach: phones"> <input data-bind='value: number' /> </div> 以前,我可以使用Jquery通过指定输入上的名称绑定到我的列表 <input name="Phones[0].Name" Phones[1].Number etc.. 也许您可以创建一个自定义绑定来设置name
<div data-bind="foreach: phones">
<input data-bind='value: number' />
</div>
以前,我可以使用Jquery通过指定输入上的名称绑定到我的列表 <input name="Phones[0].Name"
Phones[1].Number etc..
也许您可以创建一个自定义绑定来设置name属性。看这里:
那么你应该能够写:
<input data-bind='yourBindingName: Name' />
您可以使用模板或类似的foreach中的attr绑定来执行此操作,前提是您的电话号码位于可观察的数组中
<input data-bind='attr: { name: "Phones["+$index()+"].Name"}' />
我还假设您使用的是最新版本的knockout,因此您可以使用$index
这将允许您命名输入,以便它们与MVC模型绑定一起工作。您可以使用“uniqueName”,内置敲除。以下是文件:
如果需要自定义绑定(例如生成唯一id),可以使用自定义绑定:
以下是unuqueName和uniqueId的有用答案:
和
我的唯一id生成实现是:
ko.bindingHandlers.uniqueId = {
init: function (element, valueAccessor) {
if (valueAccessor()) {
element.id = ko.bindingHandlers.uniqueId.prefix + (++ko.bindingHandlers.uniqueId.counter);
}
},
counter: 0,
prefix: "unique_id_"
};
谢谢您的回复。那看起来很棒。。当我检查输入时,它与这里的完全相同。。美元指数不变。我有来自fresh clone的v2.1.0版本-这是正确的版本吗?是的,它在2.1.0中。我的回答中有几个拼写错误,我现在已经改正了。
ko.bindingHandlers.uniqueId = {
init: function (element, valueAccessor) {
if (valueAccessor()) {
element.id = ko.bindingHandlers.uniqueId.prefix + (++ko.bindingHandlers.uniqueId.counter);
}
},
counter: 0,
prefix: "unique_id_"
};