2016-04-19 19 views
1

私はいくつかのHTMLカードを持つプロジェクトに取り組んでおり、カードのフォーマットと配置は同じですが、内容は異なります。ngRepeatの配列要素からの角度指令

各カードの内容を角度指示文として実装してから、ngRepeatを使用して、各指示文をカード内に表示しながら、どのような順序でも構いません。

私のコントローラ内部:それはこのようなものになるだろう

$scope.cards = [ 
    'directice-one', 
    'directive-two', 
    //etc.. 
] 

私のディレクティブ:

.directive('directiveOne', function() { 
    return { 
     restrict: "C", 
     template: '<h1>One!!</h1>' 
    }; 
}) 

.directive('directiveTwo', function() { 
    return { 
     restrict: "C", 
     template: '<h1>Two!!</h1>' 
    }; 
}) 

//etc.. 

私のhtml:

<div class="card" ng-repeat="item in cards"> 
    <div class="{{item}}"></div> 
</div> 

しかし...ディレクティブがありませんレンダリングする。だから私はclass="directive-one"とdivを取得します。

これは私の一部の設計上の瑕疵、文法上のエラーのようなもの、または角の制限に過ぎません。よく分かりません。

私はまた、ディレクティブ<card>を作ると考えられ、それにtemplateUrl:を渡し、それは私が私の$scopeにアクセスし、各カードはそれ自身の指示だった場合、私は持っているでしょうjavsacript能力を失う原因となるました。

コード助けをアドバイスしてください。何かが非常に役に立ちます!

+0

愚かな質問ですが、ディレクティブの配列の代わりにオブジェクトの配列を渡すのはなぜですか? [{foo: "bar"、...}]のようなものであれば、もちろんitem.fooなどを使ってテンプレートからオブジェクトにアクセスすることができます。 – user1027620

+0

@delashum、Angularは( '$ compile'を介して)明示的に指示しない限り、対応するディレクティブでスタイルクラスを持つ要素を返します。ここで私が話していることの簡単なデモンストレーションです - http://plnkr.co/edit/qf677nqrPhhW0ajSkVy5?p = previewでも、あなたのデザインをレビューすることをお勧めします。 – miqid

+0

@miqid助けてくれてありがとう!私は '$ compile'について知らなかったが、うまくいった!私はこれが最高のセットアップではないことに同意するが、私はちょうど何であるか分からない。私はまだ確かな経験はしていないと思う。この種のプロジェクトに対する簡単な提案はありますか? – delashum

答えて

0

ディレクティブは、HTMLマークアップで使用する必要がある場合にのみ選択します。例えば、カードレイアウトが同じであり、ユーザの好みに基づいて異なる情報を取ると仮定する。テンプレートで

HTMLファイル

<my-card Name="First" Option="Myoptions"></Card> 
<my-card Name="Second" Option="GenOptions"></Card> 

指令

angular.module("testapp").directive("MyCard", function() { 
scope: { 
name: '@', 
Option: '@' 
Controller: "myCardController", 
templateURL: "~/myCard/myCardTemplate.html" 
} 
}); 

あなたはディレクティブを経由してHTMLページから渡された情報を実装することができます。

これが役に立ちます。

上記の方法は、フレームワークの種類のものを開発する場合に優先されることに注意してください。たとえば、Webフレームワークを開発し、ヘッダーには5つのパラメーターがあり、これらの5つのパラメーターはマークアップを介して渡す必要があります。最も重要なことは、フレームワーク/ヘッダーが独立していることです。

0

コントローラでは、ディレクティブモジュールが必要です。次に、それらをあなたが持っている配列になるスコープ変数に割り当てます。私はデスクトップになるときにコードで更新され、電話でちょっとしたものをやってみた。

関連する問題