【发布时间】:2018-06-02 22:29:27
【问题描述】:
我对这个问题感到困惑。 Knockout 使用ko.applyBindings() 方法来更新 MVVM 模式。在下面的代码中,您可以看到我的功能。首先我创建一个空的 vm 然后我调用其他函数通过getJSON() 方法填充数据。方法运行良好。
var vm = {};
function GetData(){
vm=GetMockData();
LoadUserData();
LoadCategories();
LoadSkills();
return vm;
}
我的困惑从这里开始,我的工作是根据用户输入存储这个值。
<input data-bind='' placeholder="Enter your name"/>
在顶部的 HTML 部分,我想将该值绑定到 like;GetMockData().obj.User.Name。但不工作。
function GetMockData(){
var obj={
User:{
Name: ko.observable().extend({
required: true,
minLength: 2,
maxLength: 15
}),
Surname: "Fake Surname"
}
return obj;
}
对于applyBindings(),我调用下面的代码部分。
ko.applyBindings(new GetData());
我对以下部分感到困惑。从另一个函数调用的函数中获取User.Name,因为我不是直接从applyBindings() 而是从另一个函数到达该部分。 我应该如何称呼它为 HTML 写入数据绑定值?
<input data-bind='' placeholder="Enter your name"/>
【问题讨论】:
-
您应该尝试使用更标准的(类)模式来初始化您的视图模型。现在,使用
new关键字没有意义,因为您正在变异并返回一个全局变量。除此之外:绑定上下文是vm,这意味着您的数据绑定可以是data-bind="textInput: User.Name" -
谢谢你,我按照你说的做了,效果很好!
标签: javascript mvvm knockout.js