我想在Backbone中定義一個擴展Backbone.View的父視圖。所有子視圖都將從父視圖繼承。但是每次我創建一個子視圖的新實例時,我都需要在父視圖中執行一個函數。下面是一個例子(小提琴是here):始終在Backbone中執行父功能
SimpleSample = {};
SimpleSample.ParentView = Backbone.View.extend({
initialize: function(){
//always execute this
console.log('in parent view initialise');
}
});
SimpleSample.Child1 = SimpleSample.ParentView.extend({
initialize: function(){
console.log('in child 1 initialise');
}
});
SimpleSample.Child2 = SimpleSample.ParentView.extend({
});
SimpleSample.App = function(){
this.start = function(){
var child1 = new SimpleSample.Child1();
var child2 = new SimpleSample.Child2();
}
}
$(function(){
var app = new SimpleSample.App();
app.start();
})
的這個輸出是,正如你所期望:
in child 1 initialise
in parent view initialise
因爲我已經爲Child1,在初始化代碼(定義初始化() )在ParentView中定義不運行。我不想顯式調用每個孩子的ParentView函數。每當有一個從ParentView繼承的視圖的新實例時,是否有可能總是在ParentView中執行一些代碼?
所以它必須包括在每個子視圖? – Mark 2015-03-13 13:59:26
抱歉,我沒有正確地閱讀你的問題。我認爲你的問題是如何從父視圖調用一個函數。我不知道是否可以在子視圖中自動調用父函數而不顯式調用父函數。 – 2015-03-13 14:31:57