【发布时间】:2015-05-29 02:03:30
【问题描述】:
我是 ASP.NET MVC 开发人员。我是 Knockout js 的新手,目前我在我的应用程序中使用 KO js。下拉列表选择更改 (.subcribe) 无法正常工作。请在下面找到我的代码:
我的任务是:有三个下拉列表,我必须在第一个下拉列表的更改事件时将数据绑定到下一个下拉列表。 脚本:
var array_BankNames = JSON.parse(@Html.Raw(ViewBag.Banks));
var Bank = function () {
var self = this;
self.BankName = ko.observableArray(array_BankNames);
self.SelectedBank = ko.observable();
self.BankLocation = ko.observableArray();
self.SelectedLocation = ko.observable();
self.BankBranch = ko.observableArray();
self.SelectedBranch = ko.observable();
self.SelectedBank.subscribe = function () {
alert("Hi");
$.ajax({
url: '@Url.Action("GetBankLocations_Data")',
data: { Bankname: selectedValue },
type: 'GET',
success: function (data) {
self.BankLocation(data);
}
});
}.bind(self);
};
var BanksModel = function () {
var self = this;
self.Banks = ko.observableArray([new Bank()]);
self.addBank = function () {
self.Banks.push(new Bank());
};
self.removeBank = function (Bank) {
self.Banks.remove(Bank);
};
};
ko.applyBindings(new BanksModel());
HTML:
<div class="col-sm-9 col-md-8 controls">
<select data-bind="
options: BankName,
optionsValue: 'ID',
optionsText: 'Name',
value: SelectedBank">
</select>
</div>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
@Html.LabelFor(model => model.BankLocation, new { @class = "col-sm-3 col-md-4 control-label" })
<div class="col-sm-9 col-md-8 controls">
<select data-bind="options: BankLocation,
optionsValue: 'ID', optionsText: 'Name', value: $root.SelectedLocation">
</select>
</div>
</div>
</div>
</div>
<div class="col-md-12">
<div class="col-md-6">
<div class="form-group">
@Html.LabelFor(model => model.BankBranch, new { @class = "col-sm-3 col-md-4 control-label" })
<div class="col-sm-9 col-md-8 controls">
<select data-bind="options: BankBranch,
optionsValue: 'ID', optionsText: 'Name', value: SelectedBranch">
</select>
</div>
</div>
</div>
【问题讨论】:
-
.subscribe应该可以正常工作。控制台中的任何错误?让我们知道。干杯 -
这个参考显示错误。所以删除了它。删除该引用后,控制台中没有错误。
-
由于没有错误,现在订阅触发了吗?如果不删除所有引用(暂时),只需将 jquery 1.9.js 放在 start 和 next knockout-3.2.0.js 并执行。希望它有效
-
我照你说的做了,还是没有运气:(。它仍然没有触发。
-
好吧
ko.validation.js显示错误(可能是),因为它之前提到过knockout 3.2.js。加载顺序很重要。
标签: c# asp.net-mvc knockout.js