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