2016-12-21 10 views
1

私はコンポーネントでui-routerを使用しています。ナビゲーションはうまくいっており、コンポーネント$ onInitは一度(期待どおり)呼び出されますが、ディレクティブの$ onInit(コンポーネントテンプレートの要素としてのディレクティブ)が2回呼び出されています。ネストされたui-viewのディレクティブが2回呼び出されました

コンポーネントテンプレートからui-view属性を削除すると、一度だけ呼び出されます。それがなぜであるかわからない。

最初の質問:私の方法でui-viewを使用する必要がありますか?私は、親状態が保持されるようにネストされたルートを持つことができるようにしたい(ユーザーをグリッドに管理し、ソート、ページングなどを保持したい)。私はまた、子供のルートが親のDOMフラグメントを置き換えることを望みます。

2番目の質問:なぜディレクティブの$のOnInitが二度呼ばれていますか?

http://plnkr.co/edit/rc8vbt?p=preview

私のコードのようになります。私は名前を使用する別のplnkr hereを作成

var admin = { 
    name: 'admin', 
    abstract: true, 
    url: '/Admin', 
    template: `<div ui-view=""></div>` 
}; 
var adminManageUsers = { 
    name: 'admin.manageUsers', 
    url: '/Users', 
    component: 'manageUsers' 
}; 
var adminAddUser = { 
    name: 'admin.manageUsers.add', 
    url: '/Add', 
    component: 'addUser' 
}; 
$urlRouterProvider.otherwise('/Admin/Users'); 
$stateProvider 
    .state(admin) 
    .state(adminManageUsers) 
    .state(adminAddUser); 

とコンポーネント

app.component('manageUsers', { 
    template: `<div ui-view=""> 
    <div>Manage Users</div> 
    <input type="button" value="Add User" ng-click="$muCtrl.addUser()" /> 
    <test-directive></test-directive> 
    </div>`, 
    controller: adminManageUsersComponentController, 
    controllerAs: '$muCtrl' 
}); 

app.component('addUser', { 
    template: `<div ui-view=""> 
    <div>Add User</div> 
    <input type="button" value="Manage Users" ng-click="$auCtrl.manageUsers()" /> 
    </div>`, 
    controller: adminAddUserComponentController, 
    controllerAs: '$auCtrl' 
}); 

EDIT詳細ビューhereのビュー(名前付きビュー/ターゲットの表示)。 はまだ同じ問題:(

答えて

関連する問題