我使用knockoutjs版本2.2.0,並有以下的情況:
Javasript代碼
這裏是我的3種型號的JavaScript代碼:「TAB1」,「TAB2」和「視圖模型」
knockoutjs ko.toJs(ko.toJSON)不起作用
var CustomExport = {
Tab1: function() {
this.tab1Array = ko.observableArray([
{name: "Tab1 Item1"},
{name: "Tab1 Item2"},
{name: "Tab1 Item3"}
]);
},
Tab2: function() {
this.tab2Array = ko.observableArray([
{name: "Tab2 Item1"},
{name: "Tab2 Item2"},
{name: "Tab2 Item3"}
]);
},
viewModel: function() {
this.myTab1 = new CustomExport.Tab1();
this.myTab2 = new CustomExport.Tab2();
this.grabData = function(){
alert(ko.toJS(CustomExport.viewModel));
};
}
}
ko.applyBindings(new CustomExport.viewModel());
所以,總的來說我有2種型號,我想從這些模型的所有數據抓取到一個「視圖模型」模型作爲JSON對象時,grabData功能應該提醒我的模型數據。
這是我HTML代碼
<div data-bind="with: myTab1">
<ul data-bind="template: {name: 'tabTmpl', foreach: tab1Array}"></ul>
</div>
<br/>
<div>------------------------------------------</div>
<br/>
<div data-bind="with: myTab2">
<ul data-bind="template: {name: 'tabTmpl', foreach: tab2Array}"></ul>
</div>
<br/>
<input type="button" data-bind="click: grabData" value="Grab all data from Models" />
<script id="tabTmpl" type="text/html">
<li>
<div data-bind="text: name"></div>
</li>
</script>
問題如下:
點擊「Grab all data from the models
」按鈕,我應該得到它必須包含2款數據警報(」 Tab1','Tab2')作爲json對象,但目前我收到以下警告消息:
function() {
this.myTab1 = new CustomExport.Tab1();
this.myTab2 = new CustomExport.Tab2();
this.grabData = function(){
alert(ko.toJS(CustomExport.viewModel));
};
}
另外,我在的jsfiddle Click here to see an example
任何想法,創造了它我究竟做錯了什麼?
CustomExport.viewModel是不實際的參考視圖模型,這個替換它因爲這是實際的視圖模型 – Anders