Knockout.js 更新输入框';在viewmodel内单击时显示文本-敲除

Knockout.js 更新输入框';在viewmodel内单击时显示文本-敲除,knockout.js,knockout-mapping-plugin,Knockout.js,Knockout Mapping Plugin,我有一个关于更新当前绑定的嵌套viewmodels的问题,这与我的上一个问题有关 这是一个测试,我在其中添加了一个简单的输入框来示例我当前的问题 问题是: function groupViewModel(data) { var self = this; self.newText = ko.observable(''); ko.mapping.fromJS(data, {}, self); self.addPerson = function(personData)

我有一个关于更新当前绑定的嵌套viewmodels的问题,这与我的上一个问题有关

这是一个测试,我在其中添加了一个简单的输入框来示例我当前的问题

问题是:

function groupViewModel(data) {
    var self = this;
    self.newText = ko.observable('');
    ko.mapping.fromJS(data, {}, self);
    self.addPerson = function(personData) {
        // here should be your ajax request, I'll use dummy data again
        self.People.push({Name: "Michael", LastName: "Bay"});
        *self.newText = 'Added';*
        //ko.mapping.fromJS(data, {}, self);
    };    
}
var mapping = {
    "Groups" : {
        'create': function(options) {
            return new groupViewModel(options.data);
        }
    }
};
ViewModel绑定在一个模板内(不认为示例必须绑定) 点击一个按钮,我们想更新位于它里面的输入框,输入框不会被更新,我没有通过控制台得到报告,似乎数据被更改了。你的想法是什么,小提琴位于这个问题的底部

 <div data-bind="foreach: Groups">

     <input data-bind="value:newText" /> ...
包含手动映射的ViewModel:

function groupViewModel(data) {
    var self = this;
    self.newText = ko.observable('');
    ko.mapping.fromJS(data, {}, self);
    self.addPerson = function(personData) {
        // here should be your ajax request, I'll use dummy data again
        self.People.push({Name: "Michael", LastName: "Bay"});
        *self.newText = 'Added';*
        //ko.mapping.fromJS(data, {}, self);
    };    
}
var mapping = {
    "Groups" : {
        'create': function(options) {
            return new groupViewModel(options.data);
        }
    }
};
整个代码位于fiddle上:

您的错误在这里:

self.newText = 'Added';
需要:

self.newText('Added');
因为您错误地重新分配了可观察对象。以下是更新的小提琴: