如何在Knockout.js中恢复表单的先前值?

时间:2013-05-22 19:40:08

标签: knockout.js

我有一个页面,上面有预先填充的输入,我希望能够将该初始值用作Knockout的初始值。

示例:

 <input 
      name="Address1" 
      type="text" 
      id="Address1" 
      class="input--textbox" 
      value="213 Fourth st." 
      data-bind="value:Address1" />

似乎最明显的解决方案是:

this.Address1 = ko.observable(document.getElementById("Address1").value) 

但这感觉就像它首先击败了使用像Knockout这样的东西的目的。

有没有办法可以将参数传递给Knockout,或者使用一些扩展名将值默认为表单提供的值?

2 个答案:

答案 0 :(得分:0)

你必须记住,knockout.js是一个双向绑定框架。这显然意味着进入dom元素的内容会反映在模型中。另外,反之亦然,进入模型的内容会反映在dom元素中。

因此,您只需确保将数据加载到模型中,并且UI将反映您尝试设置的所有预填充数据。

这是我的典型方法:

function MyModel(data) {
    var self = this;
    //declare properties here


    self.load = function(data) {
        if (data) {
            //set properties here
        }
    };
    //ensure when the model is first instantiated, it will attempt to load 
    //whatever data was passed in if it's not null or undefined
    self.load(data);     
}

编辑:

现在您可以灵活地将数据干净地传递给模型的构造函数,此外如果需要,可以通过显式调用load()来延迟数据加载。

答案 1 :(得分:0)

我真诚地将此视为一个重复的问题,以至于我将simply use this link as an answer