I’m using CoffeeScript and KnockoutJS and have a problem getting the values of my view model from within a function.
I have a view model:
window.Application || = {}
class Application.ViewModel
thisRef = this
searchTerm: ko.observable("")
search: ->
alert @searchTerm
Which compiles to:
window.Application || (window.Application = {});
Application.ViewModel = (function() {
var thisRef;
function ViewModel() {}
thisRef = ViewModel;
ViewModel.prototype.searchTerm = ko.observable("");
ViewModel.prototype.search = function() {
return alert(this.searchTerm);
};
return ViewModel;
})();
This view model is part of a parent view model which exposes it as field. The problem is that I can’t get a reference to the child view model. In the search function ‘this’ is a instance of the parent, which I don’t want.
That depends on how you call it. If you do
then
thiswill bem; if you writethen
thiswill beobj.Anyway, just use CoffeeScript’s
=>operator:That way,
this/@withinsearchwill point to theViewModelinstance.thisRefwill, as Travis says, just point to the class, not the instance.