C# 从模型中剔除JS绑定数组
我有一个模型,它由一个可观察的耳环组成C# 从模型中剔除JS绑定数组,c#,knockout.js,signalr,C#,Knockout.js,Signalr,我有一个模型,它由一个可观察的耳环组成 function developmentModel(id, name, town, postcode, selected, developmentAddress) { var s = this; s.Id = ko.observable(id); s.Name = ko.observable(name); s.Town = ko.observable(town); s.Postcode = ko.observable
function developmentModel(id, name, town, postcode, selected, developmentAddress) {
var s = this;
s.Id = ko.observable(id);
s.Name = ko.observable(name);
s.Town = ko.observable(town);
s.Postcode = ko.observable(postcode);
s.Selected = ko.observable(selected);
s.DevelopmentAddress = ko.observableArray(developmentAddress);
s.DisplayName = ko.computed(function() {
return s.Name() + ", " + s.Town() + ", " + s.Postcode();
});
}
此阵列使用不同的模型:
function developmentAddressModel(id, street1, street2, loc1, loc2, town, postcode) {
var s = this;
s.Id = ko.observable(id);
s.Street1 = ko.observable(street1);
s.Street2 = ko.observable(street2);
s.Loc1 = ko.observable(loc1);
s.Loc2 = ko.observable(loc2);
s.Town = ko.observable(town);
s.Postcode = ko.observable(postcode);
s.DisplayName = ko.computed(function() {
var result = s.Street1() !== undefined ? s.Street1() + ", " : "";
result += s.Street2() !== undefined ? s.Street2() + ", " : "";
result += s.Loc1() !== undefined ? s.Loc1() + ", " : "";
result += s.Loc2() !== undefined ? s.Loc2() + ", " : "";
result += s.Town() !== undefined ? s.Town() + ", " : "";
result += s.Postcode();
return result;
});
}
并且正在映射,没有任何问题:
connection.client.developmentList = function(developments) {
console.log("Returned a total of " + developments.length + " development(s)");
var mappedDevelopments = $.map(developments, function (development) {
var addresses = [];
for (var i = 0; i < development.DevelopmentAddresses.length; i++) {
var addressObject = development.DevelopmentAddresses[i].Address;
var address = new developmentAddressModel(addressObject.Id, addressObject.Street1, addressObject.Street2, addressObject.Locality1, addressObject.Locality2, addressObject.Town, addressObject.Postcode);
addresses.push(address);
}
return new developmentModel(development.Id, development.Name, development.DevelopmentAddresses[0].Address.Town, development.DevelopmentAddresses[0].Address.Postcode, false, addresses);
});
self.propertyDevelopmentList(mappedDevelopments);
};
connection.client.developmentList=函数(开发){
log(“返回的总数为“+developments.length+”developments)”;
var mappedDevelopments=$.map(开发,功能(开发){
var地址=[];
for(var i=0;i
现在,我的页面中有两个选项:
<select data-bind="options: propertyDevelopmentList, optionsText: 'DisplayName', value: selectedPropertyDevelopment, visible: propertyDevelopmentList().length > 0"></select
<select data-bind="options: propertyDevelopmentList.DevelopmentAddress, optionsText: 'DisplayName', value: selectedDevelopmentAddress, visible: propertyDevelopmentList().length > 0"></select>
第一个选择框中没有任何问题,但我需要创建第二个下拉框,其中包含原始模型填充的可观察数组。我是不是走错路了
谢谢您必须从选定的开发中获取
开发地址
数组。我建议您按如下方式更新代码:
<select data-bind="options: propertyDevelopmentList, optionsText: 'DisplayName', value: selectedPropertyDevelopment, visible: propertyDevelopmentList().length > 0"></select
<select data-bind="options: selectedPropertyDevelopment().DevelopmentAddress, optionsText: 'DisplayName', value: selectedDevelopmentAddress, visible: propertyDevelopmentList().length > 0"></select>
也许我应该补充一点,我做了console.log(mappedDevelopments)并注意到DevelopmentAddress对象没有使用我指定的模型。我认为这会起作用,但selectedPropertyDevelopment在应用程序首次启动并稍后获取数据时是未定义的-有没有告诉knockout不要绑定它?实际上,忽略这一点,我曾经