2016-04-05 17 views
0

現在、コントローラを使用せずに、Angular2スタイルでコードを記述しようとしています。外部および内部指令からのデータ転送の問題に直面しています。どのように正しく行うには? 主な問題は、ディレクティブの内部が外部スコープにアクセスし、内部ディレクティブのテンプレート内のデータを使用する方法です。例 on codepenAngularjs。ネストされたディレクティブの継承スコープ

<test-directive> 
    <nested/> 
</test-directive> 

答えて

0

を値を渡す必要があります。

class Nested { 
    restrict='E'; 
    template='<p>Nested {{inner.outer}} {{inner.last}}</p>'; 
    controller=function(){ 
    this.last='Pupkin'; 
    }; 
    controllerAs='inner'; 
    bindToController={ 
    outer: '=' // a communicating point of outer and inner directives 
    }; 
} 

ポイントはbindToControllerに、あなたはここにouterとして、エンドポイント変数を追加することができ、ということです。外側のテンプレートには、<nested outer="outer.first"/>のような値を付けます。ギュンターZöchbauerの答え@

あなたはAngualr 1とコンポーネントのスタイルを使用しての全体の例を見たい場合は、あなたが私のexpress-angular-es6-starter、ES6とTODOのMVCとコンポーネントのスタイルを見ることができ、また、角度2

のためであります角度1のコード。

+0

ありがとう!私はこのようなことを知っていたが、それはかなり時間がかかったと思うか、あるいは私はすべて同じと間違っているのだろうか? – powerman23rus

+0

あなたはいつbindsToControllerを使うべきか説明できますか?私はそれぞれの指示にそれを書いているので、正しいのでしょうか?私はあなたがオブジェクトとしてそれを使用することに気付きました、そして、これは変数の値がブール値であると思いました... – powerman23rus

+0

そして、ng-transcludeの助けを借りて過去と未来をリンクすることは可能ですか?たとえば、パドルの「最大」と「最小」スライダの値にアクセスできますか?このような - > [テンプレート](http://codepen.io/powerman23rus/pen/RaxaEP)< - link – powerman23rus

0

あなたは私version変更を参照してください、あなたはcodepen簡略化されてきた明示的

<test-directive> 
    <nested [someInput]="somePropertyOnParent"></nested> 
</test-directive> 
@Component({ 
    selector: 'nested', 
    template: `<ng-content></ng-content>`)} 
class Nested { 
    @Input() someInput; 

    ngOnInit() { 
    console.log(this.someInput); 
    } 
} 
+0

このソリューションはAngulyar 2ですが、Angular1だけを使用して同じことをしなければなりません!しかし、とにかくありがとう) – powerman23rus

関連する問題