为什么非常简单的敲除绑定对选择框不起作用?

时间:2016-06-29 13:17:47

标签: knockout.js

这应该是世界上最简单的事情。这是我的viewModel中的一行:

self.trueOrFalse = ko.observableArray(['false', 'true']);

这是我尝试绑定的形式,但最终会有一个空的下拉列表...

                <form data-bind="submit: addItem">

                    <label>Category</label><br/>
                    <div>
                        <select data-bind="options:categories, optionsText: 'Name', value: newItem.Category"></select>
                    </div><br/>


                <div class="form-group" data-bind="with: newItem">
                    <label>Name</label><br/>
                    <div>
                        <input type="text" class="form-control" id="inputName" data-bind="value:Name" />
                    </div>

                    <label>Description</label><br/>
                    <div>
                        <input type="text" rows="3" class="form-control" id="inputDescription" data-bind="value:Description"/>
                    </div>

                    <label>Price</label>
                    <div>
                        <input type="number" step="any" class="form-control" id="inputPrice" data-bind="value:Price" />
                    </div>

                    <label>Vesselizable?</label>
                    <div>                            
                        <select data-bind="options: trueOrFalse"></select>
                    </div>

                </div>
                <button type="submit" class="btn btn-default">Add</button>
            </form>

第一个选择类别是从API中提取数据并且工作得很好。但是底部的简单部分不会绑定到硬编码数组。

1 个答案:

答案 0 :(得分:1)

我可以猜测,因为你只显示了你的viewmodel的一行,但我认为错误可能是一个上下文错误...是newItem observable上的trueOrFalse observableArray吗?

<div class="form-group" data-bind="with: newItem">
  ...

    <label>Vesselizable?</label>
    <div>                            
      <select data-bind="options: trueOrFalse"></select>
    </div>

  ...
</div>
由于你的WITH绑定,

knockout在newItem上查找trueOrFalse数组,你可能想把它更改为

<select data-bind="options: $parent.trueOrFalse"></select>

甚至

<select data-bind="options: $root.trueOrFalse"></select>

Jamiec在评论中指出,看看控制台......