2012-06-23 14 views
0

所以我有像這樣一個視圖模型:在模型外的其他JavaScript中使用knockout訪問observables?

var viewModel = function() { 
    var self = this; 
    this.chartSeries = ko.observableArray(['All Series']); 
} 

ko.applyBindings(new viewModel()); 

$(function(){ 
//I want to access it here 
} 

如何做到這一點?

當我嘗試viewModel().chartSeries,viewModel.chartSeries,viewModel.chartSeries()等我得到未定義的錯誤。

回答

5

您正在收到未定義的錯誤,因爲您沒有範圍內的視圖模型實例。最簡單的事情是:

var vm = new viewModel(); 
ko.applyBindings(vm); 

$(function(){ 
    // do stuff with vm 
    vm.chartSeries.push('Series A'); 
} 
+0

嗨約翰 - 工作,我可以調用它 - 但如果可觀察到的變化,它不反映在外部函數。任何想法如何讓它訂閱它? – Elliot

+2

您可以顯式訂閱observables,並且在observable發生更改時將調用回調函數。閱讀這裏的文檔:http://knockoutjs.com/documentation/observables.html。 (搜索:明確訂閱) 你究竟想要做什麼? –

相關問題