Cha*_*lie 2 javascript coffeescript knockout.js
我正在使用CoffeeScript和KnockoutJS,并且在函数中获取视图模型的值时遇到问题.
我有一个视图模型:
window.Application || = {}
class Application.ViewModel
thisRef = this
searchTerm: ko.observable("")
search: ->
alert @searchTerm
Run Code Online (Sandbox Code Playgroud)
编译为:
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;
})();
Run Code Online (Sandbox Code Playgroud)
此视图模型是父视图模型的一部分,它将其公开为字段.问题是我无法获得对子视图模型的引用.在搜索功能中,"this"是父级的一个实例,我不想要它.
在
search函数'this'中是父的一个实例...
这取决于你如何称呼它.如果你这样做
m = new Application.ViewModel
m.search()
Run Code Online (Sandbox Code Playgroud)
然后this会m; 如果你写
obj = {search: m.search}
obj.search()
Run Code Online (Sandbox Code Playgroud)
然后this会obj.
无论如何,只需使用CoffeeScript的=>运算符:
search: =>
alert @searchTerm
Run Code Online (Sandbox Code Playgroud)
这样,this/ @within search将指向ViewModel实例.
thisRef 正如特拉维斯所说的那样,只会指向阶级,而不是实例.
| 归档时间: |
|
| 查看次数: |
2059 次 |
| 最近记录: |