javascript - 下拉列表显示 [object object] 而不是使用 knockout 的值

标签 javascript jquery knockout.js

我正在使用 knockout 尝试将数据绑定(bind)到下拉列表中,但出于某种原因,我只看到 [object][object] 而不是我想要显示的实际值,并且不确定我可能做错了什么。这是我到目前为止所拥有的:

self.views = ko.observableArray();  
self.selectedView = ko.observable();

if (views){  
     for(viewOption = 0; viewOption < views.length; viewOption++){  
          self.views.push(  
                  new viewModel(views[viewOption])  
             );  
         }  
   }

//示例数据

var sampleData = {
            viewers: [
                .....
            ],
            views: [
                {
                    vValue: 'View 1'
                },
                {
                    vValue: 'View 2'
                }
            ]
        };

//HTML

<select data-bind="options: views, value: selectedView"></select>

当我运行它时,我得到一个显示正确数量选项的下拉列表,但它没有显示 View 1 和 View 2,而是显示 [object][object] 两次。

最佳答案

当您在数组中使用对象时,您应该使用 optionsText 作为选项标签,使用 optionsValue 作为选项值。

var vm = {
  myItems: [
    { vValue: 'View 1', id: 1},
    { vValue: 'View 3', id: 3},
    { vValue: 'View 4', id: 4}
  ],
  selected: ko.observable()
};
ko.applyBindings(vm);
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>

<select data-bind="
    options: myItems,
    optionsText: 'vValue',
    optionsValue: 'id',
    value:selected" >
</select>
<br/>
Selected: <label data-bind="text: selected"></label>

关于javascript - 下拉列表显示 [object object] 而不是使用 knockout 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32020497/

相关文章:

knockout.js - 自定义绑定(bind),带有绑定(bind)和 init - knockout.js

javascript - MVVM Javascript 与传统 ASP.NET MVC 网站的可扩展性比较如何

javascript - 裁剪后的图像大于 coppit.js 中的像素大小

jquery - 嵌套表格响应对齐

javascript - 为什么我的 Angular Directive(指令)没有在隔离范围内获取父 Controller 范围?

javascript - 为什么我无法在模态中获取输入值(使用 Jquery 和 Javascript)

Jquery 从左向右滑动

javascript - 具有 knockout 绑定(bind)的空值的默认文本

javascript - 在 Laravel 项目中调用未定义的函数 asset()

javascript - 在 ng-init 中声明多个值