【问题标题】:knockout.js data-binding cannot have template and value togetherknockout.js 数据绑定不能同时具有模板和值
【发布时间】:2013-10-25 14:59:05
【问题描述】:

我尝试在<select> 控件上使用模板,但它不起作用。这是不起作用的代码。

<select data-bind="template: { name: 'os-template-detail', foreach: operatingSystems },
        value: selectedOperatingSystem"></select>

但是当我使用普通绑定时,效果很好。

<select data-bind="options: operatingSystems,
        optionsText: function (item) {
            return item.Name
        },
        value: selectedOperatingSystem"></select>

所以,我想知道是我做错了什么还是只是框架的限制。

更新 它们都显示操作系统列表。问题是当我在第一个组合框上选择一个操作系统时,它不会更新其源,而第二个组合框会更新其源。

【问题讨论】:

    标签: html knockout.js


    【解决方案1】:

    我认为您错过了指定 operatingSystems 列表和您的 os-template-detail 应如何组合成 option 元素的方式。您的绑定的问题在于,knout 会尝试列出 &lt;select&gt; 标签而不是 option 标签。

    这可能有效:

    <select data-bind="foreach: operatingSystems">
        <option data-bind="template: {name: 'os-template-detail', data: $data}">
    </select>
    

    另外我建议使用Durandal 的作文而不是淘汰模板。 This link 描述了如何将你的淘汰赛与 durandal 结合起来。

    【讨论】:

    • 我在我的问题中添加了更多信息。问题是我在 CoboBox 上选择一个项目后数据没有更新,而不是在将数据加载到其中时。
    • @Anonymous 你检查过生成的DOM吗?我认为在第一种情况下,&lt;select&gt; DOM 将由divs 而不是options 组成。所以选择某些东西不会引发任何有意义的事件来选择。
    • 是的,我已经检查过了,它是正确的。
    猜你喜欢
    • 2012-02-20
    • 1970-01-01
    • 1970-01-01
    • 2014-06-08
    • 2020-12-07
    • 2013-01-13
    • 2015-04-16
    • 2013-10-27
    • 1970-01-01
    相关资源
    最近更新 更多