74

私は単純な角度コンポーネントを書いています。パラメータをバインディングとして渡し、その値を画面に表示します。すべて正常に動作しています。パラメータが画面に表示されているのがわかります。

成分:

var app = angular.module("test", []);
app.component("test", {
  bindings: {
    "contactId": "<"
  },
  controllerAs: "model",
  controller: () => {
    //output: 'contact id from controller: undefined'
    console.log(`contact id from controller: ${this.contactId}`);
  },
  template: "<div>Contact id from view: {{model.contactId}}</div>"
});

HTML:

<test contact-id="8"></test>

ただし、コントローラー内からバインディングにアクセスしようとすると (console.log を参照)、バインディングの値はundefined. ビューでは使用できるが、コントローラーでは使用できない方法がわかりません。

私は何を間違っていますか?

これが問題を示すplnkrです。

4

9 に答える 9

7

これはアロー関数では機能しないように見えるキーワードですが、これは機能します

controller: function() {
   alert('contact id from controller: ' + this.contactId);
}

アロー関数を使用する場合、thisは window オブジェクトを参照しているようです。

アロー関数は独自の this コンテキストを作成せず、囲んでいるコンテキストの this 値を取得します

于 2016-07-26T13:59:37.617 に答える