嵌套 ui-view 中的指令调用了两次
directive in nested ui-view called twice
我正在使用 ui-router 和组件。导航运行良好,组件 $onInit 被调用一次(如预期的那样),但在指令的 $onInit 中(指令作为组件模板中的元素)被调用两次。
如果我从组件模板中删除 ui-view 属性,它只会被调用一次。不知道为什么。
第一个问题:我应该像现在这样使用ui-view吗?我希望能够嵌套路由,以便保留父状态(管理用户将是一个网格,我想保留任何排序、分页等)。我还希望子路由替换父路由的 DOM 片段。
第二个问题:为什么指令的$onInit被调用了两次?
http://plnkr.co/edit/rc8vbt?p=preview
我的代码如下所示:
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'
});
编辑:
我创建了另一个 plnkr here that uses named views as detailed here(名为 views/View 定位)。
仍然是同样的问题:(
这是一个已知问题,已在 master 中解决,很可能会在下一个版本中解决。
我正在使用 ui-router 和组件。导航运行良好,组件 $onInit 被调用一次(如预期的那样),但在指令的 $onInit 中(指令作为组件模板中的元素)被调用两次。
如果我从组件模板中删除 ui-view 属性,它只会被调用一次。不知道为什么。
第一个问题:我应该像现在这样使用ui-view吗?我希望能够嵌套路由,以便保留父状态(管理用户将是一个网格,我想保留任何排序、分页等)。我还希望子路由替换父路由的 DOM 片段。
第二个问题:为什么指令的$onInit被调用了两次?
http://plnkr.co/edit/rc8vbt?p=preview
我的代码如下所示:
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'
});
编辑:
我创建了另一个 plnkr here that uses named views as detailed here(名为 views/View 定位)。
仍然是同样的问题:(
这是一个已知问题,已在 master 中解决,很可能会在下一个版本中解决。