backbone.jsビューが初期化されるたびに関数が実行されるようにするにはどうすればよいですか?バックボーンビューを初期化するとき
backbone.jsの拡張機能として、通常のビューコードの外に置くことができるものを探しています。
アイデアは定型文の量を減らすことです。
ありがとうございました。
backbone.jsビューが初期化されるたびに関数が実行されるようにするにはどうすればよいですか?バックボーンビューを初期化するとき
backbone.jsの拡張機能として、通常のビューコードの外に置くことができるものを探しています。
アイデアは定型文の量を減らすことです。
ありがとうございました。
JavaScriptは真のオブジェクト指向プログラミング言語ではないので、JavaやC#のように継承を使って問題を解決することはできません。
解決策の1つは、工場設計パターンを使用することです。
ビューを直接インスタンス化する代わりに、ビューをインスタンス化するファクトリメソッドを呼び出すことができます。
var viewFactory = function(view, viewOptions) {
//perform your boilerplate code
return new view(viewOptions);
}
AView = Backbone.View.extend({});
var person = new Backbone.Model({name: 'Paul'});
var view = viewFactory(AView, { model: person });
は、ここでそれは他の言語で可能であるエレガントな解決策としてはありませんjsfiddle example
だが、それは仕事をしていません。
http://documentcloud.github.com/backbone/#View-constructor
var ItemView = Backbone.View.extend({
initialize: function(){
alert('View Initialized');
}
});
EDIT:私はより明確にする必要があり
Backbone.Eventsを使用できます。
app.eventManager = {};
_.extend(app.eventManager, Backbone.Events);
app.eventManager.bind("newView", app.yourfunction(view));
そして、あなたはあなたの機能を起動したい任意のビューのinitializeメソッドで:
app.eventManager.trigger("newView", this);
「この」あなたのアプリのトップレベルまたはグローバルオブジェクトの
関数に "view"パラメータとして渡されたビューインスタンスです。
は組み込みBACKBONE.JS機能を初期化します。パトリック・ユーイングの言葉で
がここにhttp://podcast.rubyonrails.org/programs/1/episodes/railsconf-2007が見つかりました:パンチダック
"if it walks like a duck and talks like a duck, it’s a duck, right? So if this duck is not giving you the noise that you want, you’ve got to just punch that duck until it returns what you expect"
(またはモンキーパッチをご希望の場合)バックボーンオブジェクトを。
Backbone.View.prototype.initialize = function(){
alert('I overrode the default initialize function!');
}
うん、これは私が今やっていることです。それは許容可能な/良い解決策です。 – Harry