我是新來的淘汰賽,今天已經成功地將一些頁面綁定到了一些頁面上,還有一些ajax調用。這是有趣的東西!正確構造knockoutjs視圖模型和服務器調用
既然我有這些基本功能的工作,我需要考慮接下來會發生什麼。
局勢:
我有一個'設置'頁面上有4個選項卡。每個選項卡都會有一些輸入字段,基本的表單元素,但是所有這些元素都將通過knockout綁定,並且數據將使用asp.net WebApi和ajax來回訪問。
問題是,我如何構建當前的視圖模型,以確保當我開始集成頁面上的其他選項卡時,我沒有遇到一些障礙?
這是我目前的全視圖模型:
function UserSettingsViewModel(apiBaseUrl, userId) {
var self = this;
self.firstName = ko.observable();
self.lastName = ko.observable();
self.primaryEmail = ko.observable();
self.secondaryEmail = ko.observable();
self.addressCity = ko.observable();
self.addressPostalCode = ko.observable();
self.addressCounty = ko.observable();
self.addressCountry = ko.observable();
self.fullName = ko.computed(function() {
return self.firstName() + " " + self.lastName();
}, this);
$.getJSON(apiBaseUrl + "?userId=" + userId, function (data) {
alert(JSON.stringify(data));
self.firstName(data.FirstName);
self.lastName(data.LastName);
self.primaryEmail(data.PrimaryEmail);
self.secondaryEmail(data.SecondaryEmail);
self.addressCity(data.City);
self.addressPostalCode(data.PostalCode);
self.addressCounty(data.County);
self.addressCountry(data.Country);
});
self.updateName = function() {
alert('in update name method!');
$.ajax({
type: "PUT",
contentType: "application/json; charset=utf-8",
url: apiBaseUrl + "?userId=" + userId,
data: ko.toJSON({
UserGuid: userId,
FirstName: self.firstName(),
LastName: self.lastName(),
PrimaryEmail: self.primaryEmail(),
SecondaryEmail: self.secondaryEmail(),
City: self.addressCity(),
PostalCode: self.addressPostalCode(),
County: self.addressCounty(),
Country: self.addressCountry()
}),
dataType: "json",
success: function (msg) {
alert('Success');
},
error: function (err) {
alert('Error');
}
});
};
}
並在視圖本身我做一點點:
ko.applyBindings(new UserSettingsViewModel('@Url.RouteUrl("DefaultApi",
new { httproute = "httproute", controller = "Settings" })', userId));
同樣,我是一個初學者(沒碰過這個東西一年多了,我當時並不擅長)。
您能否詳細說明'頂級'虛擬機?我知道這個頁面本身需要大約2-3個viewmodels,就像我所需要的,所以這聽起來像我需要的。我需要查看模板綁定,淘汰賽的網站有一個體面的覆蓋面呢?任何推薦閱讀? – ledgeJumper