3

コンポーネントオブジェクトを返す関数を使用してコンポーネントを作成すると、コンポーネントが初期化されません。この2つの状況を共有しています。誰かが私にそれらの違いを説明できますか?

HTML:

<div ng-app="demoApp">
  <navbar></navbar>
</div>

作業コード:フィドル

var NavbarTemplate = `<button ng-click="$ctrl.clickTest()">Click Test</button>`;
var navbar = {
  controller: function() {
    this.clickTest = clickTest;
    function clickTest() {
      alert("hello");
    }
  },
  template: NavbarTemplate
};
angular.module('demoApp', []).component('navbar', navbar);

欠陥のある (エラーのない) コード: Fiddle

function getComponent(){
    var template = `<button ng-click="$ctrl.clickTest()">Click Test</button>`;
    var component = {
    controller: function() {
      this.clickTest = clickTest;
      function clickTest() {
          alert("hello");
        }
    },
    template: template
  }
  return component;
}
angular.module('demoApp', []).component('navbar', getComponent);
4

1 に答える 1

1

getComponent次のように、最後の行にパラメーターとして渡すかっこを追加する必要があります。

angular.module('demoApp', []).component('navbar', getComponent());

単純にgetComponent(括弧なしで) を使用すると、getComponent関数への参照がcomponent()実行されずに渡されます。ただし、角度はコンポーネント構成を含むオブジェクトを期待しています。

したがって、渡すと関数が呼び出され、関数への参照ではなく、getComponent()この構成オブジェクトを角度初期化子に渡すコンポーネント構成オブジェクトが返されます。component()getComponent

于 2016-08-31T12:41:38.137 に答える