2016-11-02 9 views
4

コンポーネントに渡されたバインディングはhtmlで動作しますが、コントローラでは未定義です。AngularJs 1.5 ES6:コントローラで定義されていないバインディング

<hero value="foo"></hero> 

hero.component.js

import template from './hero.html'; 
import controller from './hero.controller'; 

let heroComponent = { 
    restrict: 'E', 
    bindings: { 
    value: '@' 
    }, 
    template, 
    controller 
}; 

HeroController.js hero.html

class HeroController { 
    constructor() { 
    this.name = 'hero'; 
    console.log(this.value); // undefined! 
    } 
} 

<section class="hero"> 
    <h1>AngularJs ES6 Example</h1> 
    <!-- Value is works within template --> 
    <h3>You can find me inside {{ $ctrl.name }}.html {{ $ctrl.value }}</h3> 
</section> 

私は角度のバージョンを使用しています1.5.0

答えて

2

値はng-if iは$のOnInitにしようとした

<hero ng-if="$ctrl.value" value="$ctrl.value"></hero> 
2

コンストラクタ呼び出し中にバインディングが解決されることは考えられません。内部的にどの角度がコントローラをインスタンス化し、コンストラクタを呼び出す依存関係を注入します。次に、バインディングが設定されます。

ライフサイクルフック$onInitまたは$onChangesを代わりに使用する必要があります。デベロッパーガイドhere(ライフサイクルフックに関する関連セクションはページの半分程度です)をご覧ください。

+0

問題を解決して使用して、APIコールの後にロードされたため、そのが定義されていないが、それはまだ定義されていない、私の値は、私は見ていないので、変更されることはありません私が覚えているように、$ onChanges –

+0

@farhanlatheef 1.5.0を使用するポイントには$ onInitがありません。 1.5.3以上にアップグレードしてください。 – estus

+0

$ onInitは1.5.0にあるはずです。しかし、正しい$ onChangesは1.5.3に付属しています。あなたの問題の概要を説明してくれますか? 'foo'は親コントローラの定義されたプロパティですか? – PerfectPixel

関連する問題