Knockout.js 基于另一个可观测值的剔除foreach
我有一个可观测的数组和几个可观测的数组。我想迭代这些可观察数组,这取决于我有什么可观察的。听起来有多神秘。如果是的话,这会使它变得超级简单Knockout.js 基于另一个可观测值的剔除foreach,knockout.js,ko.observablearray,Knockout.js,Ko.observablearray,我有一个可观测的数组和几个可观测的数组。我想迭代这些可观察数组,这取决于我有什么可观察的。听起来有多神秘。如果是的话,这会使它变得超级简单 function VM(){ var self = this; this.type1 = ko.observableArray(['Hello', 'this', 'is', 'first', 'array']); this.type2 = ko.observableArray(['Second', 'Array']); th
function VM(){
var self = this;
this.type1 = ko.observableArray(['Hello', 'this', 'is', 'first', 'array']);
this.type2 = ko.observableArray(['Second', 'Array']);
this.type3 = ko.observableArray(['hohoho', 'hahaha']);
this.type = ko.observable('type1')
this.setType = function(t){
self.type(t);
}
}
ko.applyBindings(new VM())
因此,根据单击哪个按钮,我希望迭代不同的数组
<button data-bind="click: function(){setType('type1')}">Type1</button>
<button data-bind="click: function(){setType('type2')}">Type2</button>
<button data-bind="click: function(){setType('type3')}">Type3</button>
<div data-bind='text: type'></div><br>
<ul data-bind="foreach: type1">
<li data-bind="text: $data">
</ul>
Type1
类型2
类型3
-
如您所见,单击按钮ChangeObservable,但我无法更改将被迭代的数组。我怎样才能做到这一点呢?一种方法是使用计算机
this.selectedType = ko.computed(function() {
return self[self.type()]();
});
<ul data-bind="foreach: selectedType">
<li data-bind="text: $data">
</ul>
this.selectedType=ko.computed(函数(){
返回self[self.type()]();
});
-
一种方法是使用计算的
this.selectedType = ko.computed(function() {
return self[self.type()]();
});
<ul data-bind="foreach: selectedType">
<li data-bind="text: $data">
</ul>
this.selectedType=ko.computed(函数(){
返回self[self.type()]();
});
-
一种方法是使用计算的
this.selectedType = ko.computed(function() {
return self[self.type()]();
});
<ul data-bind="foreach: selectedType">
<li data-bind="text: $data">
</ul>
this.selectedType=ko.computed(函数(){
返回self[self.type()]();
});
-
一种方法是使用计算的
this.selectedType = ko.computed(function() {
return self[self.type()]();
});
<ul data-bind="foreach: selectedType">
<li data-bind="text: $data">
</ul>
this.selectedType=ko.computed(函数(){
返回self[self.type()]();
});
-
修改您的
ul
如下:
<ul data-bind="foreach: $root[type()]">
<li data-bind="text: $data">
</ul>
$root
由knockout
提供,并引用最初指定给ko.applyBindings
调用的对象。修改您的ul
,如下所示:
<ul data-bind="foreach: $root[type()]">
<li data-bind="text: $data">
</ul>
$root
由knockout
提供,并引用最初指定给ko.applyBindings
调用的对象。修改您的ul
,如下所示:
<ul data-bind="foreach: $root[type()]">
<li data-bind="text: $data">
</ul>
$root
由knockout
提供,并引用最初指定给ko.applyBindings
调用的对象。修改您的ul
,如下所示:
<ul data-bind="foreach: $root[type()]">
<li data-bind="text: $data">
</ul>
$root
由knockout
提供,并引用最初指定给ko.applyBindings
调用的对象