【发布时间】:2014-04-29 20:42:01
【问题描述】:
我将 ui-router 用于我的应用程序并在 ui-view 中嵌套控制器。我的父控制器如下所示:
'use strict';
angular.module("discussoramaApp").controller("mainController", ["RestFullResponse", "Restangular", "localStorageService", "$scope", function(RestFullResponse, Restangular, localStorageService, $scope){
var currentId = localStorageService.get("***");
var user = Restangular.one("users", currentId);
var Profile = user.get({}, {"Authorization" : localStorageService.get('***')}).then(function(profile) {
$scope.profile = profile;
});
}]);
还有我的孩子控制器:
'use strict';
angular.module("discussoramaApp").controller("getTopicsController", ["RestFullResponse", "Restangular", "localStorageService", "$scope", function(RestFullResponse, Restangular, localStorageService, $scope){
var topics = Restangular.all('topics');
var allTopics = topics.getList({},{"Authorization" : localStorageService.get('***')}).then(function(topics){
$scope.topics = topics;
});
console.log($scope); // this works
console.log($scope.profile); // this returns undefined
}]);
我遇到的问题是在子控制器中获取配置文件的继承 $scope 值。当我记录 $scope 时,配置文件在控制台中清晰可见。
但是当我尝试记录 $scope.profile 时,控制台返回未定义。有什么想法吗?
编辑:添加我的 ui-router 配置。
angular.module("discussoramaApp").config(
function($stateProvider, $urlRouterProvider){
$urlRouterProvider.otherwise('/home');
$urlRouterProvider.when('', '/home');
$stateProvider
.state('main',{
url: '',
templateUrl: 'partials/main.html',
requireLogin: true
})
.state('main.home',{
url: '/home',
templateUrl: 'partials/main.home.html',
requireLogin: true,
title: 'Home'
});
}
);
以及对应的html文件:
// main.html
<div ng-controller="mainController">
<div class="container">
<div ui-view></div>
</div>
</div>
和子 html 部分:
// main.home.html
<div ng-controller="getTopicsController">
<div ng-repeat="topic in topics | filter:search">
<a ui-sref="main.topic({id: topic.id})">{{ topic.topic_title }}</a>
</div>
</div>
更新:通过在子控制器中设置这样的观察者解决了这个问题。感谢@jonathanpglick 和@Nix 的帮助。
$scope.$watch('profile', function(profile) {
if(profile) {
$window.document.title = "Discussorama | " + profile.user.name;
}
});
【问题讨论】:
-
请发一个告诉你
ui-routerconfig的blub。 -
添加了 ui-router 配置和部分。
-
谢谢。我在下面发布了答案。