來自Java世界我已將自定義方法添加到我的視圖中,但出於某種原因,我無法在視圖內調用它們。看起來Backbone.View.extend的行爲並不像我預期的那樣。使用自定義方法的主幹視圖
...
var TreeView = Backbone.View.extend({
el: '#org-tree',
initialize: function() {
eventBus.on("route:change", this.triggerFilterEvent);
this.listenTo(treeItems, 'sync', this.render);
treeItems.fetch({
reset: true
});
},
render: function() {
...
},
foo: function() {
console.log("foo");
},
triggerFilterEvent: function(name) {
this.foo();
...
}
});
...
以下代碼將導致Uncaught TypeError: Object #<Object> has no method 'foo'
。 然而,我註冊爲eventHandler回調函數的其他自定義方法triggerFilterEvent
可以正常工作。
1)爲什麼? 2)如何通過聲明TreeView特定的方法來重用代碼?
嘗試除非我記錯了seoncd參數('this')在'bind'通話仍然是指'eventBus',所以它還是贏了」工作。要使用'bind',你首先需要根據我的答案保存對上下文的引用。 –
適用於我,綁定發生在初始化,在這個階段'this'仍然指向視圖。這似乎是我最優雅的解決方案。謝謝! – Will