Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 嵌套ui视图中的指令调用了两次_Angularjs_Angular Ui Router_Angular Ui_State - Fatal编程技术网

Angularjs 嵌套ui视图中的指令调用了两次

Angularjs 嵌套ui视图中的指令调用了两次,angularjs,angular-ui-router,angular-ui,state,Angularjs,Angular Ui Router,Angular Ui,State,我正在使用带有组件的ui路由器。导航工作得很好,组件$onInit被调用了一次(正如预期的那样),但在指令的$onInit(作为组件模板中的元素的指令)中被调用了两次 如果我从components模板中删除ui视图属性,它只会被调用一次。不知道为什么 第一个问题:我应该以我现在的方式使用ui视图吗?我希望能够有嵌套的路由,以便保留父状态(manage users将是一个网格,我希望保留任何排序、分页等)。我还希望子路由替换父级的DOM片段 第二个问题:为什么指令的$onInit被调用了两次 我

我正在使用带有组件的ui路由器。导航工作得很好,组件$onInit被调用了一次(正如预期的那样),但在指令的$onInit(作为组件模板中的元素的指令)中被调用了两次

如果我从components模板中删除ui视图属性,它只会被调用一次。不知道为什么

第一个问题:我应该以我现在的方式使用ui视图吗?我希望能够有嵌套的路由,以便保留父状态(manage users将是一个网格,我希望保留任何排序、分页等)。我还希望子路由替换父级的DOM片段

第二个问题:为什么指令的$onInit被调用了两次

我的代码如下所示:

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);
var admin={
名称:'管理员',
摘要:没错,
url:“/Admin”,
模板:``
};
var adminManageUsers={
名称:“admin.manageUsers”,
url:“/Users”,
组件:“manageUsers”
};
var adminAddUser={
名称:“admin.manageUsers.add”,
url:“/Add”,
组件:“addUser”
};
$urlRouterProvider。否则('/Admin/Users');
$stateProvider
.州(行政)
.state(adminManageUsers)
.状态(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'
});
app.component('manageUsers'{
模板:`
管理用户
`,
控制器:adminManageUsersComponentController,
控制器:“$muCtrl”
});
app.component('addUser'{
模板:`
添加用户
`,
控制器:adminAddUserComponentController,
controllerAs:“$auCtrl”
});
编辑
我创建了另一个plnkr,它使用命名视图作为详细信息(命名视图/视图目标)。
仍然是相同的问题:(

这是一个已知的问题,已在master中解决,很可能会在下一版本中解决