2016-11-28 14 views
1

このビューでコントローラ名が"Listctrl"のビューを持っていますが、別のコントローラを"LocationCtrl"にしたいと思います。同じビューで複数のコントローラをイオン性で使用する

がどのように私はこれを正しく解決する必要があり

.state('list', { 
     url: '/list', 
     templateUrl: 'templates/list.html', 
     controller: "ListCtrl", 
     cache: false 
     }) 

HTML(するlist.html)

<ion-view ng-init="ini()" ng-controller="LocationCtrl"> 
    <ion-header-bar class="banner-top ext-box" align-title-h="left"> 
    <div class="int-box2"><h2 id="s_back1">STORIE</h2></div> 
    </ion-header-bar> 
<ion-content class="has-header has-footer no-bgColor start" overflow-scroll="false" has-bouncing="false"> 
<div class="container-list"> 

ルーティング:現時点では私はこのようなこれを行いますか?コントローラコードを別々のビューで再利用したいので、同じビューに対しては2つのコントローラが必要ですが、それぞれ異なる場所に配置する必要があります。現時点<ion-view ng-init="ini()" ng-controller="LocationCtrl">

LocationCtrl

任意の助けに感謝を実行しません!

+0

これは意味をなさない。 「1つのビューの2つのコントローラー」は何を意味するのでしょうか?あなた(またはフレームワーク)はどのように差別化できるでしょうか? – Claies

答えて

1

1つのビューに2つのコントローラを持つことはできませんが、これは意味をなさないためです。あなたが共有すべき機能は、利用制御の継承を持っているが、これはLocationCtrl$scopeにそのメソッドを追加する場合にのみ可能である場合:

var app = angular.module('angularjs', []); 

app.controller('LocationCtrl', function($scope) { 
    // I have functionality to share 
}); 

app.controller('ListCtrl', function($scope, $controller) { 
    $controller('LocationCtrl', {$scope: $scope}); // This adds properties to ListCtrl's scope 
}); 

別のアプローチは、ラッパーのdivにng-controller="LocationCtrl"を置くことができます

<ion-view ng-init="ini()"> 
    <div ng-controller="LocationCtrl"> 
     <ion-header-bar class="banner-top ext-box" align-title-h="left"> 
      <div class="int-box2"><h2 id="s_back1">STORIE</h2></div> 
     </ion-header-bar> 

しかし、これは良い選択肢のようには見えません。より良いアプローチはLocationCtrlに定義された機能を持つコンポーネント/ディレクティブを作成して、ビューのどこかにそれを使用することです:

<ion-view ng-init="ini()"> 
    <component-with-location-ctrl-functionality></component-with-location-ctrl-functionality> 
0

あなたがルートのコントローラ「ListCtrl」を設定している場合は、あなたが場所を作成したいです

<your-new-drctv></your-new-drctv> 
:あなたが孤立スコープで

app.directive('yourNewDrctv', function() { 
    return { 
     restrict: 'E', 
     templateUrl: 'yourNewTmpl.html', 
     scope: {}, 
     controller: 'yourNewCtrl' 
    }; 
}); 

をディレクティブを作成して、テンプレートで使用することができ、別のコントローラ「テン​​プレート/するlist.html」どこでも ちょうどそのようで、このルートの内部

関連する問題