如何映射使用ko.viewmodel计算的字段

kin*_*aro 2 knockout.js knockout-viewmodel-plugin

不知道如何映射使用ko.viewmodel计算的字段,任何人都知道它是如何完成的?非常感谢任何帮助.

var model = {
    firstName: "Le gatêau",
    lastName: "Chien",
    items: ['J-Rock', 'J-Pop'],
    itemselected: 'J-Pop',
    all: function(){ return firstName + ', ' + lastName + ', ' + itemselected },
};
Run Code Online (Sandbox Code Playgroud)

编辑:

我后悔没有更清楚,我编辑我的问题,我使用ko.viewmodel插件将对象转换为ko模型,但不是作为字段ko.computed将对象定义为ko时将地图识别为一个计算:

var updatedModel = {
    firstName: "El pastel",
    lastName: "Perro",
    items: ['Pop', 'Rock'],
    itemselected: 'Rock',
    all: function(){ return firstName + ', ' + lastName + ', ' + itemselected },
};
var viewModel = ko.viewmodel.fromModel(model);
ko.applyBindings(viewModel);
Run Code Online (Sandbox Code Playgroud)

我的代码complet在这里DEMO

编辑2:

感谢您的回复,我将最终代码与我想要的功能放在一起:

JS:

var options = {
    extend: {
        "{root}": function (m) {
            m.all = ko.computed(function () {
                var item = ko.utils.arrayFirst(m.music(), function (g) {
                    return g.id() == m.selected();
                });
                if (item == null) return '';
                return m.like() + ' ' + item.name();
            });
        }
    }
};
var m1 = '{"like":"Pastel","music":[{"id":1,"name":"J-Pop"},{"id":2,"name":"J-Rock"},{"id":3,"name":"Rock"}],"selected":"3"}';
var m2 = '{"like":"Gatêau","music":[{"id":1,"name":"J-Pop"},{"id":2,"name":"J-Rock"},{"id":3,"name":"Rock"}],"selected":"2"}';
var viewmodel = ko.viewmodel.fromModel(JSON.parse(m1), options);
ko.applyBindings(viewmodel);
setTimeout(function () {
    console.clear();
    ko.viewmodel.updateFromModel(viewmodel, JSON.parse(m2));
}, 2300)
Run Code Online (Sandbox Code Playgroud)

HTML:

Comida:
<input data-bind="value: like" />
<br/>Musica:
<select data-bind="options: music, optionsText: 'name', optionsValue: 'id', value: selected"></select>
<br/>

<h1 data-bind="text: all"></h1>
Run Code Online (Sandbox Code Playgroud)

最后的演示在这里FINAL-DEMO

Adi*_*ngh 5

如果我的问题正确,您需要ko.computed在模型上使用属性.该ko.viewModel撑着提供options控制你的视图模型.使用该extend选项可以创建计算属性,all而不是直接添加到对象.我创造了一个相同的小提琴:http://jsfiddle.net/sublimejs/L6Wm3/8/.