我正在开发一个使用knockout和dojo工具包的应用程序。我创建了一个模块,但无法在方法中使用此关键字作为viewModel
require(["dojo/_base/declare",
"dojo/_base/lang",
"http://ajax.aspnetcdn.com/ajax/knockout/knockout-3.0.0.js"], function(declare, lang, ko){
var GeekService = declare(null, {
geeks: ko.observableArray(),
constructor: function(){
//this.removeGeek = lang.hitch(this, this.removeGeek);
},
removeGeek: function(item){
console.log(this)
}.bind(this) // Ensure that "this" is always this view model
});
ko.applyBindings(new GeekService());
})
如果我在构造函数中不使用lang.hitch(this, this.removeGeek);
,则无法通过removeGeek方法中的 this 关键字访问ViewModel对象。
Knockout示例,告诉我们我们可以使用 bind(this)来确保"这个"始终是ViewModel。 here example
上面的appplication运行和控制台写入:Window {top:Window,window:Window,location:Location,external:Object,chrome:Object ...}
但它应该返回GeekService wiewModel对象。