首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用knockout js指定name属性

如何使用knockout js指定name属性
EN

Stack Overflow用户
提问于 2012-05-29 14:00:58
回答 3查看 7.1K关注 0票数 19

我有一个使用knockoutjs / mvc3的绑定列表

代码语言:javascript
复制
<div data-bind="foreach: phones">
   <input data-bind='value: number' />
</div>

将此代码发送到我的控制器操作,即

代码语言:javascript
复制
[HttpPost]
public ActionResult Index([Deserialize] WizardModel wizard, IStepViewModel step)
{
}

以前,我可以使用Jquery绑定到我的List< T>,方法是在输入上指定名称

代码语言:javascript
复制
 <input name="Phones[0].Name"
              Phones[1].Number etc..

但我现在使用的是knockout,我不清楚它是如何工作的。谁能给我指引一个正确的方向。

标签

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-05-29 17:25:43

您可以使用模板或foreach中的attr绑定来实现这一点,假设您的电话号码在一个可观察的数组中。

代码语言:javascript
复制
<input data-bind='attr: { name: "Phones["+$index()+"].Name"}' />

我还假设你使用的是最新版本的knockout,这样你就可以使用$index了。

这将允许您命名输入,以便它们与MVC模型绑定一起工作。

票数 52
EN

Stack Overflow用户

发布于 2013-01-11 17:01:46

你可以使用‘唯一名称’,内置knockout。下面是文档:http://knockoutjs.com/documentation/uniqueName-binding.html

如果需要定制绑定(例如,生成唯一的id ),可以使用定制绑定:http://knockoutjs.com/documentation/custom-bindings.html

以下是unuqueName和uniqueId的完整答案:Unique ids in knockout.js templatesKnockout JS "uniqueName" binding - Same name to two fields

我对唯一id生成的实现是:

代码语言:javascript
复制
ko.bindingHandlers.uniqueId = {
    init: function (element, valueAccessor) {
        if (valueAccessor()) {
            element.id = ko.bindingHandlers.uniqueId.prefix + (++ko.bindingHandlers.uniqueId.counter);
        }
    },
    counter: 0,
    prefix: "unique_id_"
};

票数 1
EN

Stack Overflow用户

发布于 2012-05-29 15:36:52

也许您可以创建一个自定义绑定来设置name属性。看这里:http://knockoutjs.com/documentation/custom-bindings.html

然后你应该能够写:

代码语言:javascript
复制
<input data-bind='yourBindingName: Name'  />
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10793803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档