2

私は自分自身の非常に基本的なMVCコントローラーを実装しています。必要なのは、viewNameがある場合、「viewName」という名前のjavascriptオブジェクトをインスタンス化することだけです。たとえば。

オブジェクト定義が次のようになっているとしましょう

function ViewABC() {}
ViewABC.prototype.init = function() {
      alert("comes here!");
};

コントローラモジュールのどこかに、ビュー名が「ViewABC」として表示されます。私が欲しいのは、viewNameでオブジェクトを呼び出すことだけです

function(viewName){
//check if viewName exists somewhere! initial validation
//create var viewObj = new 'viewName' here in this case it will be
//var viewObj =- new ViewABC();
//then call viewObj.init();

window[className]とthis[className]を調べましたが、windowもthisも、コンテキストで定義した関数クラスを持っていません。

お知らせ下さい。

4

1 に答える 1

3

グローバルスコープに関数をダンプするだけでなく、これについてはどうでしょうか。

Views = Views || {}; // namespace initialization
Views['ViewABC'] = function() {};
// ...
var viewName = 'ViewABC';
var viewObj = new Views[viewName]();

アップデート

最初の行を次のように変更します。

window.Views = window.Views || {}; 

または、1回だけ使用する場合は、次のようにします。

Views = {}; 
于 2013-03-14T23:02:35.500 に答える