2017-05-11 3 views
0

私はAngularを学習しており、とても基本的なアプリケーションを設定しています。ルートのtemplateUrlプロパティを使用してデータをレンダリングする場合、返されるテンプレートにサブコントローラを含めるにはどうすればよいでしょうか?たとえば、「createOrEditItem」テンプレートを「viewItem」テンプレートの一番下に含めて、「createOrEditItem」を後で再利用できるようにするなどです。templateUrlにネストされたAngularJSコントローラを自動的にインスタンス化します

ng-controller属性をテンプレートに設定して、アプリレベルで定義したコントローラ名に設定しようとしましたが、有効になっていません。マスタコントローラの内容が設定されているときにインスタンス化する代わりに、これをディレクティブで行う必要がありますか?

+0

'コントローラのtemplateUrlプロパティを介して'? AFAIK、コントローラにはtemplateUrlsがありません。 – tanmay

+0

多分、ネストされたディレクティブの種類のものを探しています。その基本的な例は[this plunker](http://embed.plnkr.co/mUXCd7/)をチェックしてください – tanmay

+0

ありがとう - 私は、コントローラではなく、質問を編集したルートを意味した! – tags2k

答えて

1

はい、質問の後の部分で述べたように、あなたはdirectiveを使用する必要があります。 AngularJS> = v1.5を使用する場合は、プラグ可能でネストもうまく動作するので、componentを選択する必要があります。

ルートのためにも、あなたが直接このようcomponentを使用できることに注意してください:コメントが示唆するように、あなたが自由にhomeコンポーネントのテンプレート内の他のコンポーネントを使用することができ、今

var myMod = angular.module('myMod', ['ngRoute']); 
myMod.component('home', { 
    template: '<h1>Home</h1><p>Hello, {{ $ctrl.user.name }} !</p>', 
    //     ^^^^ other components can be used here 
    controller: function() { 
    this.user = {name: 'world'}; 
    } 
}); 

myMod.config(function($routeProvider) { 
    $routeProvider.when('/', { 
    template: '<home></home>' 
    }); 
}); 

これはちょっと役立ちます。

+0

これは絶対に私が望んでいた!コンポーネントはその時のように見えます。コントローラーとのやりとりを最小限に抑え、再利用性はどうですか? – tags2k

+0

@ tags2k正しい!また、前方互換(Angular2と4の視点)の視点からも、コンポーネントを使用する方法があります。喜んで少し助けた.. – tanmay

0

ディレクティブを使用できます。

別のオプションは、個別のビュー/ルートを使用することです。 ui-viewタグを追加すると、ビューとルートを定義できます。

これは、ここで説明されています https://scotch.io/tutorials/angular-routing-using-ui-router

関連する問題