hifive / hifivemain

main repository
http://www.htmlhifive.com/
Other
40 stars 10 forks source link

Viewクラスが持つupdate/append/prepend/bind以外のメソッドは、ルート要素が存在していなくても実行したい #583

Open mtakeuchi opened 7 years ago

mtakeuchi commented 7 years ago

Viewが持つメソッドでは、throwErrorIfNoRootElement()でコントローラまたはルート要素が存在しない場合例外を投げるようになっていますが、get(), load(), register(), isValid(), isAvailable(), clear(), getAvailableTemplates()はルート要素に依存しないので、これらのメソッドはルート要素が存在しなくても実行できる(ルートエレメントの存在チェックをしない)ようにしてほしいです。

現在の仕様だと、以下のように親コントローラのinitのタイミングで、子コントローラのテンプレートの読み込みを行いたい場合にエラーになってしまいます。

  var childController = {
    __name: 'ChildController',
    loadTemplate: function(url) {
      return this.view.load(url);
    }
  };

  h5.core.controller('body', {
    childController: childController,
    __name: 'ParentController',
    __init: function() {
      // Uncaught Error: ルートエレメントの設定されていないコントローラのメソッドview#loadは実行できません。
      return this.childController.loadTemplate('hoge.ejs');
    }
  });