私はコンポーネントで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のビュー(名前付きビュー/ターゲットの表示)。 はまだ同じ問題:(