從客戶端我必須對REST服務進行多個ajax調用,這會給我JSON中的三個不同的域模型。現在在客戶端,我必須在將它們綁定到控件之前將它們轉換爲viewmodel。這意味着將它們轉換爲僅用於呈現數據的完全不同的結構。任何想法或建議都會有所幫助。Knockout - Viewmodel轉換
0
A
回答
0
http://jsfiddle.net/sujesharukil/RJGQw/
var vm1 = {
Id: 1,
Name: 'some name',
Address1: 'Some street somewhere',
City: 'New York',
Country: 'USA',
Zip : '11111'
};
var vm2 = {
title: 'Mr',
designations: ['Chief', 'Boss', 'Lord'],
secrets: ['xxxxx','yyyyy','zzzzz']
};
var vmCombines = function(data1, data2){
return {
combinedName: ko.observable(data2.title + ' ' + data1.Name),
designation: ko.observable(function(){
if(data2.designations.length == 0)
return '';
return data2.designations.join();
}()),
Address: ko.observable(function(){
return data1.Address1 + ', ' + data1.City + ',' + data1.Country + ',' + data1.Zip
}())
}
};
ko.applyBindings(new vmCombines(vm1, vm2));
和HTML
<input type="text" data-bind="value: combinedName"/><br />
<input type="text" data-bind="value: designation"/><br />
<input type="text" data-bind="value: Address"/><br />
0
var viewModel = JSON.parse(jsonContentFromService);
也許是這樣,那麼:
var mainVM = {};
mainVM.SomeStuffFromVm1 = vm1.WhateverYouNeed
mainVM.SomeStuffFromVM2 = vm2.WhateveryYouNeed;
0
你應該檢查出單頁Web應用程序約翰爸爸的課程。他描述了一種我肯定會滿足您需求的架構。雖然他只有一個Web API,但如果使用多個API,則在架構上沒有區別。
簡而言之,您需要一個模型模塊來定義客戶端對象(model.employee
和model.customer
)的形狀。然後,您的視圖模型模塊包含包含(除其他外)一個或多個這些對象的視圖模型。例如。 vm.employees
將包含員工對象的列表(ko.observableArray
),而vm.employeesAndCustomers
將包含員工及其關聯客戶的ko.observableArray
。如果您希望只有部分數據來自model.employee
對象的視圖模型和來自model.customer
對象的部分數據,那麼您需要定義一個新模型,如和model.customerBrief
,然後定義一個使用這些項目列表的視圖模型。
您應該使用dataservice
模塊從服務中檢索數據,並使用datacontext
模塊將接收到的JSON轉換爲客戶端(model。*)對象列表,並在內存列表中保存這些列表。查看模型從datacontext
收到他們的observableArrays
。
datacontext
將使用model.mapper
模塊將接收到的JSON轉換爲其客戶端表單。
相關問題
- 1. Dynamic Item ViewModel Knockout
- 2. Knockout viewmodel函數不叫
- 3. Knockout viewmodel date - > MVC 4查看模型在帖子中未轉換
- 4. 將ViewModel轉換爲QueryString
- 5. Knockout viewmodel返回函數(如何?)
- 6. Knockout JS event for any viewmodel dom update
- 7. 保存與knockout viewModel不兼容?
- 8. 如何訪問Knockout組件中的viewModel?
- 9. Knockout Circular Reference(簡單貨幣轉換器)
- 10. 如何將ViewModel轉換爲另一個ViewModel?
- 11. 將<T>轉換成ViewModel
- 12. 從ViewModel參數的WPF轉換器
- 13. 將ViewModel替換爲另一個ViewModel
- 14. Knockout + jquery驗證
- 15. Knockout模板綁定ViewModel數據作爲參數
- 16. Knockout JS - 通過自定義腳本更新ViewModel數據
- 17. 將ViewModel傳遞給可重用的Knockout控件
- 18. Knockout viewmodel函數隻影響最後一個實例
- 19. Knockout,ViewModel內部的其他對象和數據綁定
- 20. Knockout JS將我的viewmodel創建更改爲使用映射pulgin
- 21. Knockout,ViewModel是不可計算的對象嗎?
- 22. 爲Knockout組件加載外部ViewModel和模板
- 23. 如何訪問綁定到Knockout中的不同元素的ViewModel?
- 24. 使用Chrome控制檯通過RequireJS訪問Knockout ViewModel
- 25. 如何將lat/long值綁定到knockout viewmodel方法?
- 26. 調用knockout js中定義的函數ViewModel
- 27. Knockout繼承重用基礎ViewModel的相同實例嗎?
- 28. RequireJs with Knockout
- 29. viewmodel .prototype .function vs self .function in viewmodel?
- 30. 將Knockout js json轉換爲可觀察的
我的場景是調用VAR customerViewModel = JSON.parse(jsonContentFromService1); var employeeViewModel = JSON.parse(jsonContentFromService2);然後構造另一個稱爲screen1ViewModel的viewModel,它將從employeeViewModel和customerViewModel中獲取一些選擇數據。那就是我試圖實現的場景 – 2013-03-14 02:33:07
您可以基於其他三個構建一個新對象 – TGH 2013-03-14 02:37:57