在viewmodel - knockout内点击一下,更新输入框的文本

时间:2014-09-09 15:17:50

标签: knockout.js knockout-mapping-plugin

我有一个关于更新当前绑定的嵌套视图模型的问题,这与我上一个问题here有关。

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

问题是:

ViewModel绑定在模板中(不要认为样本必须是) 在按钮上单击我们要更新其中的输入框,输入框不会更新,我确实通过控制台获取报告,似乎数据已更改。你有什么想法,小提琴位于这个问题的底部。

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

     <input data-bind="value:newText" /> ...

目标是:

self.newText = 'Added'; // were it doesn't take effect

包含手动映射的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);
        }
    }
};

整个代码位于小提琴上:

http://jsfiddle.net/btbp9o4c/1/

1 个答案:

答案 0 :(得分:1)

您的错误在这里:

self.newText = 'Added';

需要:

self.newText('Added');

因为你错误地重新分配了observable。这是更新的小提琴:

http://jsfiddle.net/6L9ozbtp/