获得Observable值不起作用?

时间:2013-11-07 07:08:03

标签: knockout.js

我正在使用knockout.js库。我有一个布尔值,我将其保存为Observable。但是当我尝试在下拉列表中选择索引更改事件时获取值。它给了我这个错误:

Object function viewModel(model) {
this.stocks = ko.observableArray(model.stocks); this.isGeneral = ko.observable(model.generalStockEnabled); } has no method 'isGeneral'

这是我注册模型的代码:

 function viewModel(model) {      
        this.stocks = ko.observableArray(model.stocks);
        this.isGeneral = ko.observable(model.generalStockEnabled);
    }

这是我的下拉列表事件:

 $('#enableGeneratInventorydl').change(function () {
            if ($('#enableGeneratInventorydl :selected').val() === "True")
            {
                alert(viewModel.isGeneral())

            }
            else
            {

            }
        });

我在页面初始化时调用它

 ko.applyBindings(new viewModel(data));

数据对象的布尔值为generalStockEnabled。

任何想法?

1 个答案:

答案 0 :(得分:1)

您可以创建全局变量viewModel,这将很有效:

function viewModel(model) 
{      
   this.stocks = ko.observableArray(model.stocks);
   this.isGeneral = ko.observable(model.generalStockEnabled);
}
window.myViewModel = new viewModel(data);  
//...  
ko.applyBindings(window.myViewModel);  

现在您可以随时拨打myViewModel.isGeneral()

$('#enableGeneratInventorydl').change(function () 
      {
        if ($('#enableGeneratInventorydl :selected').val() === "True")
        {
            alert(myViewModel.isGeneral())
// ...