我使用knockout JS将SELECT HTML标记与一些动态值绑定。此外,我正在尝试设置一个失败的选定选项。请告诉我哪里出错了。
self.level1Choices.selectedChoice = ko.observable(2); - this line does not seem to work.
此代码的JSFiddle位于http://jsfiddle.net/oarp7gwj/7/ 由于某种原因,下载不会在JSFiddle中加载。我不认为我已正确引用淘汰JS。在我的本地环境中,我可以加载带有值的选择框。但是,我无法设置所选值。
@Wayne Ellery,@ QBM5 - 请告知,因为您已经知道了这一点:)答案 0 :(得分:0)
您应该使用var来声明模型对象以避免范围问题
var viewModel = new DataModel();
主要问题是您需要通过Datamodel中的this变量公开它来添加到Datamodel。
var DataModel = function (client) {
var self = this;
self.level1Choices = ko.observableArray();
};
请看Helo World示例,了解如何执行此操作:
http://knockoutjs.com/examples/helloWorld.html
我认为这是自我,因为这是一个不用担心的最佳做法,指的是这里提到的其他内容:http://knockoutjs.com/documentation/computedObservables.html。
我将loadAllApprovers方法移动到DataModel中,因为它是它所属的位置,因此它可以访问填充数据模型。 我将移动服务客户端添加到构造函数中,以便可以模拟它来测试模型。
var DataModel = function (client) {
var self = this;
self.level1Choices = ko.observableArray();
var loadAllApprovers = function () {
var allAppprovers = client.getTable('TABLE');
var query = allAppprovers.select("ID", "FirstName").read().done(function (approverResults) {
self.level1Choices(approverResults);
}, function (err) {
console.log("Error: " + err);
});
};
loadAllApprovers();
};
你也错过了jsfiddle中的淘汰赛。