1

我有一个页面,上面有预填充的输入,我希望能够使用该初始值作为 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,或者使用一些扩展,将值默认为表单提供的值?

4

1 回答 1

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()现在,您可以灵活地将数据干净地传递给模型的构造函数,此外还可以在需要时通过显式调用延迟数据加载。

于 2013-05-22T21:18:38.937 回答