Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax 使用绑定到可观察数组的选项取消预定义默认值_Ajax_Knockout.js_Html Select - Fatal编程技术网

Ajax 使用绑定到可观察数组的选项取消预定义默认值

Ajax 使用绑定到可观察数组的选项取消预定义默认值,ajax,knockout.js,html-select,Ajax,Knockout.js,Html Select,我正在从服务器获取一个select选项列表,并填充一个observableArray。然后我想将所选项目设置为预定义值。我有一个非常简单的JSFIDLE,它模拟通过单击按钮从服务器提取数据 下面是Javascript的基本尝试: (function() { var vm = (function() { var self = this; self.array = ko.observableArray([]);

我正在从服务器获取一个select选项列表,并填充一个observableArray。然后我想将所选项目设置为预定义值。我有一个非常简单的JSFIDLE,它模拟通过单击按钮从服务器提取数据

下面是Javascript的基本尝试:

(function() {
    var vm = (function() {
        var self = this;        
        self.array = ko.observableArray([]);        
        self.selectedValue = ko.observable();
        self.useSetTimeout = ko.observable(false);        
        self.array.subscribe(function(newValue) {
            self.selectedValue('b');
        });       
        self.populate = function() {
            self.array(['a','b','c']);
        };       
    }());
    ko.applyBindings(vm);
}());
这是我的解决方法,它取代了“self.selectedValue('b');”:


我不太喜欢把这当作一种解决办法。似乎应该有一个合理的方法来处理这个问题,但仅仅在订阅触发器上设置值似乎不起作用。

您需要选项AfterRender。这是一把小提琴:

HTML-

<select data-bind="options: array, value: selectedValue, optionsAfterRender: setVal">

文档--并向下滚动到备注2

您需要选项AfterRender。这是一把小提琴:

HTML-

<select data-bind="options: array, value: selectedValue, optionsAfterRender: setVal">

文档--并向下滚动到备注2

您需要选项AfterRender。这是一把小提琴:

HTML-

<select data-bind="options: array, value: selectedValue, optionsAfterRender: setVal">

文档--并向下滚动到备注2

您需要选项AfterRender。这是一把小提琴:

HTML-

<select data-bind="options: array, value: selectedValue, optionsAfterRender: setVal">

文档--并向下滚动到注释2

一旦填充事件结束并获得json并将其放入数组中,为什么不立即设置值呢?一旦您在self.array中设置了数据,它就会更新

(function() {
    var vm = (function() {
        var self = this;

        self.array = ko.observableArray([]);
        self.selectedValue = ko.observable();

        self.populate = function() {
            // magical assmagic goes and get's json, and converts it to ['a','b','c']
            self.array(['a','b','c']); // dropdown is now populated
            self.selectedValue('c');   // therefore we can set it to a valid value
        };

    }());
    ko.applyBindings(vm);
}());
见下文:

一旦完成填充事件并获取json并将其放入数组中,为什么不立即设置值?一旦您在self.array中设置了数据,它就会更新

(function() {
    var vm = (function() {
        var self = this;

        self.array = ko.observableArray([]);
        self.selectedValue = ko.observable();

        self.populate = function() {
            // magical assmagic goes and get's json, and converts it to ['a','b','c']
            self.array(['a','b','c']); // dropdown is now populated
            self.selectedValue('c');   // therefore we can set it to a valid value
        };

    }());
    ko.applyBindings(vm);
}());
见下文:

一旦完成填充事件并获取json并将其放入数组中,为什么不立即设置值?一旦您在self.array中设置了数据,它就会更新

(function() {
    var vm = (function() {
        var self = this;

        self.array = ko.observableArray([]);
        self.selectedValue = ko.observable();

        self.populate = function() {
            // magical assmagic goes and get's json, and converts it to ['a','b','c']
            self.array(['a','b','c']); // dropdown is now populated
            self.selectedValue('c');   // therefore we can set it to a valid value
        };

    }());
    ko.applyBindings(vm);
}());
见下文:

一旦完成填充事件并获取json并将其放入数组中,为什么不立即设置值?一旦您在self.array中设置了数据,它就会更新

(function() {
    var vm = (function() {
        var self = this;

        self.array = ko.observableArray([]);
        self.selectedValue = ko.observable();

        self.populate = function() {
            // magical assmagic goes and get's json, and converts it to ['a','b','c']
            self.array(['a','b','c']); // dropdown is now populated
            self.selectedValue('c');   // therefore we can set it to a valid value
        };

    }());
    ko.applyBindings(vm);
}());
见下文: