user123456
user123456

Reputation: 2659

Getting Observable value is not working ?

I am using knockout.js library. I have a Boolean value and I am saving it as Observable. But when I try to get the value in a drop down selected index change event. It gives me this error :

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

Here is my code for registering my model :

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

here is my drop down list event :

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

            }
            else
            {

            }
        });

I am calling this at page initialize

 ko.applyBindings(new viewModel(data));

the data object has a boolean value generalStockEnabled.

Any Idea ?

Upvotes: 2

Views: 107

Answers (1)

Ilya
Ilya

Reputation: 29703

You can create global variable viewModel and this will works well:

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

Now you can call myViewModel.isGeneral() anywhere

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

Upvotes: 1

Related Questions