Monday, May 20, 2024
 Popular · Latest · Hot · Upcoming
162
rated 0 times [  164] [ 2]  / answers: 1 / hits: 9057  / 10 Years ago, wed, june 18, 2014, 12:00:00

Is it possible to provide a computed observable an extra parameter?



For example, something like this:



var ViewModel = function(first, last) {
this.firstName = ko.observable(first);
this.lastName = ko.observable(last);
var self = this;
this.fullName = ko.computed(function(separator) {
return self.firstName() + ' ' + self.lastName();
}, this);
};


And then in the html:



<div data-bind=text: fullName(' - ')></div>


My actual use case is far more complicated, but this is essentially what I'm trying to achieve, pass in a value in the html which is used as part of the computed function.



Failing this is there a way to make a ordinary function which takes parameters behave like a (computed) observable?


More From » knockout.js

 Answers
35

You can create a function, which returns an computed variable. You can try something like this.



var ViewModel = function(first, last) {
this.firstName = ko.observable(first);
this.lastName = ko.observable(last);
var self = this;
this.fullName = function(separator){
return ko.computed(function () {
return self.firstName() + separator + self.lastName();}, this);
};
};

<div data-bind=text: ViewModel.fullName('-')></div>

[#44494] Monday, June 16, 2014, 10 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
denver

Total Points: 232
Total Questions: 111
Total Answers: 103

Location: South Korea
Member since Sat, Oct 2, 2021
3 Years ago
;