C# ko.arrayFilter不';行不通

C# ko.arrayFilter不';行不通,c#,asp.net-mvc,knockout.js,C#,Asp.net Mvc,Knockout.js,我在后端有此功能: public JsonResult GetEstados() { List<State> states = new List<State>() { new State(1, "Acre", "AC"), new State(2, "Alagoas", "AL"), new State(3, "Amapá", "AP") ... }; List<City>

我在后端有此功能:

public JsonResult GetEstados()
{
    List<State> states = new List<State>() {
        new State(1, "Acre", "AC"),
        new State(2, "Alagoas", "AL"),
        new State(3, "Amapá", "AP")
        ...
    };

    List<City> cities = new List<City>() {
        new City(1, "Rio Branco", states[0]),
        new City(2, "Brasília", states[6]), 
        new City(4, "Belo Horizonte", states[12])
        ....
    };

    return Json(new {
        states = states,
        cities = cities
    }, JsonRequestBehavior.AllowGet);
}
好的,这是创建一个城市和州的observableArray的过程

在我看来,我有以下代码来显示州和城市:

<div class="form-group col-lg-4 col-md-4 col-sm-6 col-xs-12">
    <label class="sr-only" for="estado">State</label>
        <select class="form-control" data-bind="
         options: states, 
         optionsText: 'name', 
         optionsValue: 'id', 
         value: selectedState, 
         optionsCaption: ' '"></select>
</div>

<div class="form-group col-lg-8 col-md-8 col-sm-6 col-xs-12">
    <label class="sr-only" for="cidade">City</label>
        <select class="form-control" data-bind="
         options: citiesFromSelectedState, 
         optionsText: 'name', 
         optionsValue: 'id', 
         value: selectedCity, 
         optionsCaption: ' '"></select>
</div>

陈述
城市
但它不能正常工作。我做错什么了吗?
谢谢大家的帮助

不应评估可观察状态,您应将项目添加到observableArray及其评估中。删除以下状态后的括号:

model.states.push(new State(ko.toJS(state)));
model.states.push将一项添加到observableArray。和model.states().push将一项添加到数组中,该数组是observableArray内部状态的副本

响应:

因为id不是可观察的,所以不能调用它。你最好使用这个片段。 这将在selectedState和citiesFromSelectedState之间创建依赖关系

self.citiesFromSelectedState = ko.computed(function() {
    var state = self.selectedState();
    return ko.utils.arrayFilter(self.cities(), function(city) {
        return city.state.id == state;
    }
}, self);

不应评估可观察的状态,您应将项目添加到observableArray及其评估中。删除以下状态后的括号:

model.states.push(new State(ko.toJS(state)));
model.states.push将一项添加到observableArray。和model.states().push将一项添加到数组中,该数组是observableArray内部状态的副本

响应:

因为id不是可观察的,所以不能调用它。你最好使用这个片段。 这将在selectedState和citiesFromSelectedState之间创建依赖关系

self.citiesFromSelectedState = ko.computed(function() {
    var state = self.selectedState();
    return ko.utils.arrayFilter(self.cities(), function(city) {
        return city.state.id == state;
    }
}, self);

什么工作不正常?过滤过程。当我使用
cities
属性作为
options
绑定值时,结果会正确填充。当我尝试使用该计算属性时,它不工作。什么工作不正常?过滤过程。当我使用
cities
属性作为
options
绑定值时,结果会正确填充。当我尝试使用该计算属性时,它不起作用。但是过滤也不起作用。当我添加一些静态值而不是动态值时,效果很好。而我的缺点是,我更改了在对象中使用的每个位置,效果很好!谢谢好的,我做了这些改变。但是过滤也不起作用。当我添加一些静态值而不是动态值时,效果很好。而我的缺点是,我更改了在对象中使用的每个位置,效果很好!谢谢