转换可观察数组的形式并显示在选择列表中 [英] Converting the form of an observable array and displaying in select list

查看:112
本文介绍了转换可观察数组的形式并显示在选择列表中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个如下所示的可观察数组.

I have an observable array as below..

var myObservableArray = ko.observableArray(["Bungle","George","Zippy"]);

我希望将元素复制到另一个可观察的数组中,但是要使用以下格式,其中类型始终是未知的.

I wish to copy the elements into another observable array but in the following format where type is always unknown..

var anotherObservableArray = ko.observableArray([
    { name: "Bungle", type: "Unknown" },
    { name: "George", type: "Unknown" },
    { name: "Zippy", type: "Unknown" }
]); 

如果原始的myObservableArray发生了更改,那么另一个ObservableArray也需要进行更改. 衷心感谢您的帮助.

If the original myObservableArray changes, anotherObservableArray also needs to change. Any help is sincerely appreciated..

谢谢

推荐答案

您可以根据原始数据创建视图模型,然后使用它(

You can create a view model from original data and then use it (jsfiddle):

var originalArray = ["Bungle","George","Zippy"];
function createItemModel(name) {
  var model = {
    name: ko.observable(name),
    type: ko.observable("Unknown"),
  }
  model.displayText = ko.computed(function() {
    return model.name() + '-' + model.type();
  });
  return model;
}
var myObservableArray = ko.observableArray(originalArray.map(createItemModel));

var viewModel = {
  myObservableArray: myObservableArray,
  selected: ko.observable()
};

ko.applyBindings(viewModel);

并在标记中使用它(来自第二个问题):

And use this in the markup (from your second question):

<select data-bind="options: myObservableArray,
                   optionsText: 'displayText',
                   value: selected"></select>

更新1

更新了 jsfiddle ,更改了所选项目的类型.

Update 1

Updated jsfiddle with changing type for selected item.

这篇关于转换可观察数组的形式并显示在选择列表中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆