角度1.5.8のコンポーネント内でのtranscludeに関する質問です。transludeを使用するには、角度1.5を使用してください。
ここにいくつかのコードの例を示します。
var app = angular.module('app', [])
function AccordionController() {
var self = this;
// add panel
self.addPanel = function(panel) {
// code to add panel
}
self.selectPanel = function() {
//code to select panel
}
}
// register the accordion component
app.component('accordion', {
template: '<!---accordion-template-->',
controller: AccordionController
}
function AccordionPanelController() {
// use parents methods here
var self = this;
// add panel
self.parent.addPanel(self);
// select panel
self.parent.selectPanel(self);
}
// register the accordion-panel component
app.component('accordionPanel', {
// require the parent component
// In this case parent is an instance of accordion component
require: {
'parent': '^accordion',
template: '<!---accrodion-panel-template-->',
controller: AccordionController
}
私の質問は、それがtranscludeを使用して、親内の全ての係るパネル入れ子に良好であるか、または代替的に、これは内部渡された配列に基づいて、パネルの必要な数をループ親へのデータアレイに渡すありますバインディングを使って
おかげ
//
多くのおかげでお返事、私はおそらく、我々はモーダルを持っている。ここ
<modal modal-id="editCompany" title="Edit Company"> <company-form company="$ctrl.company"></company-form> </modal>
次のコードビットである必要がtranscludeの持っ例えば追加上記の例では、私は会社のフォームを追加していますが、これは連絡フォームになる可能性があります。別の方法がありますか?
多くのおかげで、transcludeの私が持っている例は、おそらく必要であることは、コード '<モーダルモーダル-ID =「editCompany」タイトル=「編集会社」>の以下のビットである <会社-form company = "$ ctrl.company"> company-form> ここには、上記の例で使用されているさまざまな他のコンポーネントがあるかもしれないモーダルコンポーネントがあります。私は会社を追加していますしかし、これは連絡フォームになる可能性があります。別の方法がありますか? –
絶対に。サービスを利用する。私が書いた1つのアプリケーションは、入れ子にされたコンポーネントでポップアップを必要とします(私は実際には全体的なUXを嫌いですが、時には意味をなさない)。ポップアップディレクティブコントローラに注入されるPopupServiceという名前のものを作成しました。 あなたのデータをアプリケーションの完全に別個のレイヤーとして扱い、ビュー階層の上下にイベントを送信するのではなく、サービスを使用してデータを保持して提供することは、よりクリーンです。私は階層のどこにコンポーネントがあるのか、あなたはすべきではありません。 UIマークアップを書き直すと、コードが壊れてしまいます。 –