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
调用的对象