Santiago Benitez
Santiago Benitez

Reputation: 362

Knockout js set multple observables together

I wonder if there is any way to update the whole viewmodel with a single object.
For instance, saying our viewmodel is as follows:

    Function ExampleViewModel(){
     this.name = ko.observable();
     this.lastname = ko.observable();
     this.phone = ko.observable();
    }
    var viewmodel = new ViewModel();
    ko.applyBindinings(viewmodel);

And then suppose I create an object like:

    var newObject = {name: "newname", lastname: "lastname", phone: 432}

Instead of setting individually each observable as follows:

        viewmodel.name(newObject.name);
             or
        viewmodel.name(newObject.name).lastname(newObject.lastname) etc etc

Could I update the whole viewmodel doing something like:

        viewmodel.update(newObject)?

Upvotes: 0

Views: 55

Answers (1)

sroes
sroes

Reputation: 15053

Just loop through the object:

for (var key in newObject) {
    if (viewModel[key] && ko.isObservable(viewModel[key])) {
        viewModel[key](newObject[key]);
    }
}

Upvotes: 1

Related Questions