首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用敲除重置下拉列表

使用敲除重置下拉列表
EN

Stack Overflow用户
提问于 2016-02-16 09:56:39
回答 1查看 547关注 0票数 0

我对Knockout非常陌生,当我选择默认选项时,我的级联下拉列表被重置了。

这是我目前的代码

JS

代码语言:javascript
复制
/// <reference path="../knockout/knockout-3.4.0.debug.js" />
/// <reference path="../jquery/jquery.min.js" />

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

self.ManufacturerOptions = ko.observableArray();
self.VehicleManufacturerId = ko.observable();
self.RangeOptions = ko.observableArray();
self.VehicleRangeId = ko.observable();

var Deals = {

    ManufacturerOptions: self.ManufacturerOptions,
    VehicleManufacturerId: self.VehicleManufacturerId,
    RangeOptions: self.RangeOptions,
    VehicleRangeId: ko.observable(self.VehicleRangeId),

};

self.Deal = ko.observable();
self.Deals = ko.observableArray();
GetManufacturers();

function GetManufacturers() {
    $.ajax({
        url: 'http://localhost:47633/api/Vehicle/GetManufacturers',
        type: 'get',
        crossDomain: true,
        dataType: 'json',
        contentType: "application/json; charset=utf-8",
        success: function (dataReturned) {
            self.ManufacturerOptions(dataReturned);
        }
    });
}

self.manufacturerChanged = function (obj, event) {
    var manufacturerId = $("#Manufacturer").val();
    GetRanges(manufacturerId);
}

function GetRanges(manufacturerId) {
    return manufacturerId ? $.ajax({
        url: 'http://localhost:47633/api/Vehicle/GetRanges?manufacturerCode=' + manufacturerId,
        type: 'get',
        crossDomain: true,
        dataType: 'json',
        contentType: "application/json; charset=utf-8",
        success: function (dataReturned) {
            self.RangeOptions(dataReturned);
        }
    }) : null;
}
};

$(document).ready(function () {
    ko.applyBindings(new deal());
});

代码语言:javascript
复制
<h1>DealBook</h1>
<div data-bind="if: Deal">
<div>
    <h2>Update Deal</h2>
</div>
<div>
    <p>Manufacturer: <select id="Manufacturer" data-bind="options: ManufacturerOptions, optionsCaption: 'Select Manufacturer', optionsValue: 'cman_code', optionsText: 'cman_name', value: Deal().VehicleManufacturerId, event: { change: manufacturerChanged}"></select></p>
    <p>Range: <select id="Range" data-bind="options: RangeOptions, optionsCaption: 'Select Range', optionsValue: 'cran_code', optionsText: 'cran_name', value: Deal().VehicleRangeId, event: { change: rangeChanged }"></select></p>
</div>
</div>
<div id="dealCreateContainer" data-bind="ifnot: Deal()">
<div>
    <p>Manufacturer: <select id="Manufacturer" data-bind="options: ManufacturerOptions, optionsCaption: 'Select Manufacturer', optionsValue: 'cman_code', optionsText: 'cman_name', value: VehicleManufacturerId, event: { change: manufacturerChanged}"></select></p>
    <p>Range: <select id="Range" data-bind="options: RangeOptions, optionsCaption: 'Select Range', optionsValue: 'cran_code', optionsText: 'cran_name', value: VehicleRangeId, event: { change: rangeChanged }"></select></p>
</div>

我可以通过self.VehicleRangeId(null)设置范围的默认值,但我似乎不能清除下拉列表。我想我可能可以设置选项- self.RangeOptions(null),但这会清除下拉列表,包括默认值。有人能给我一个指针或者解释我需要做什么吗?

非常感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-16 11:06:03

如果您有默认值,您可以只覆盖您的RangeOptions

代码语言:javascript
复制
self.RangeOptions(['default value'])

否则,可以清除所有范围选项,如下所示:

代码语言:javascript
复制
self.RangeOptions([])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35429206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档