Ich kann das beobachtbare Array nicht mit einem neuen Wert zurücksetzen, sondern benutze etwas Lazy Loading Technic. Ich kann löschen, aber nicht zurücksetzen, aber ich kann keinen neuen dynamischen Wert hinzufügen.Knockout - Wie man ein dynamisches beobachtbares Array mit einem neuen Wert zurücksetzt
Geige http://jsfiddle.net/kspxa8as/
js
var i = 1;
optionsProvider = function(self) {
var self = self || {};
self.options = {};
self.get = function(name, initialValue) {
if (!self.options[name]) {
console.log("Called - " + name);
self.options[name] = ko.observableArray([initialValue]);
var requestHeader = '';
setTimeout(function() {
var aa = [{name: "plant 1" + i, selected: true}, {name: "palnt 2" + i, selected: false}];
self.options[name](aa);
i++;
}, 2000);
}
return self.options[name];
};
return self;
};
ViewModel = function() {
var self = this;
var k = 1;
var ob = new optionsProvider(self);
self.PlantSelected = ob.get("name" + k, '');
self.fillNewSelect = function() {
self.PlantSelected.removeAll();
self.PlantSelected().push(ob.get("name" + k, ''));
k++;
};
};
ko.applyBindings(new ViewModel());
HTML
<select class="n_imported_country"
data-bind="options: PlantSelected,
optionsText :'name'
"
>
</select>
<div data-bind="click: function(){
$root.fillNewSelect();
}">click to fill new select value</div>
Ich bin ein Neuling, großes Willkommen Ihre Antworten auf Knockout.
Verwendung 'self.PlantSelected.push (ob.get ("name" + k, ''));' 'statt()'. '()' verwendet, um zu lesen, wo, als ob Sie einige Daten hinzufügen müssen, müssen Sie die deklarierte Instanz verwenden, d. h. 'sel.PlantSelected = ko.observableArray()' cheers –
nicht funktioniert es nur Drucken c im Dropdown. Ich weiß nicht, y –
Warum die "Timeout"? – haim770