选择选项值 - selectedchoice不起作用

时间:2014-10-13 17:53:11

标签: data-binding knockout.js

我使用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 - 请告知,因为您已经知道了这一点:)

1 个答案:

答案 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中的淘汰赛。

http://jsfiddle.net/az4rox0q/6/