Javascript UI路由器状态控制器不更新作用域
我使用UI路由器来控制单页应用程序的状态。我有一个很大的国家链,我将其缩小为:Javascript UI路由器状态控制器不更新作用域,javascript,angularjs,angular-ui-router,Javascript,Angularjs,Angular Ui Router,我使用UI路由器来控制单页应用程序的状态。我有一个很大的国家链,我将其缩小为: $stateProvider .state('app', { url: "/", abstract: true }) .state('app.main', { url: "/main", abstract: true }) .state('app.main.users', { url: "/users",
$stateProvider
.state('app', {
url: "/",
abstract: true
})
.state('app.main', {
url: "/main",
abstract: true
})
.state('app.main.users', {
url: "/users",
abstract: true,
controller: 'UsersController',
controllerAs: 'uc'
})
.state('app.main.users.list', {
url: "/list",
templateUrl: "list.html",
});
假设此app.main.users是CRUD的抽象状态,CRUD将在所有操作中使用相同的控制器
问题是来自子控制器的“list.html”文件无法看到来自控制器的值
我为该问题提供了一个plunkr样本:
以下是完整的代码:
var myapp = angular.module('myapp', ["ui.router"])
myapp.config(function($stateProvider, $urlRouterProvider) {
$urlRouterProvider.otherwise("/");
$stateProvider
.state('app', {
url: "/",
abstract: true
})
.state('app.main', {
url: "/main",
abstract: true
})
.state('app.main.users', {
url: "/users",
abstract: true,
controller: 'UsersController',
controllerAs: 'uc'
})
.state('app.main.users.list', {
url: "/list",
templateUrl: "list.html",
});
})
myapp.controller('UsersController', usersController);
function usersController() {
console.log("UsersController instantiated");
var vm = this;
vm.user = 'username';
}
如果你有任何想法,请告诉我。我找不到解决这个问题的办法。
谢谢 我已经解决了这个问题 我在美国的概念中遗漏了一些东西。首先,我需要在app.main状态上添加一个,这样它就可以呈现app.main.users状态。我的声明也错了 这正与所需的场景一起工作
谢谢你的帮助 我已经解决了这个问题 我在美国的概念中遗漏了一些东西。首先,我需要在app.main状态上添加一个,这样它就可以呈现app.main.users状态。我的声明也错了 这正与所需的场景一起工作
谢谢你的帮助 我刚刚看到了弹射机的问题。很抱歉,我不得不更改一些代码来制作这个示例,所以我可能忘记了一些东西。我现在就去看看。谢谢我理解你的观点,即一次只激活一个状态,但顶层状态是一个抽象状态这一事实并不意味着孩子们继承了它的控制器定义?请参考这一点,谢谢!我以前看过这个主题,问题是我没有使用$scope。我使用的是controllerAs语法。当我导航到视图时,HTML呈现,控制器函数被调用,vm.variables被更改,但这并没有反映在呈现的页面上。很抱歉,我不得不更改一些代码来制作这个示例,所以我可能忘记了一些东西。我现在就去看看。谢谢我理解你的观点,即一次只激活一个状态,但顶层状态是一个抽象状态这一事实并不意味着孩子们继承了它的控制器定义?请参考这一点,谢谢!我以前看过这个主题,问题是我没有使用$scope。我使用的是controllerAs语法。当我导航到视图时,HTML呈现,控制器函数被调用,vm.variables被更改,但这不会反映在呈现的页面上。