Я использую вложенные представления ui.router
в моем приложении Angular. Это соответствующая часть моей .config
:Угловой ui-router: дочернее состояние, не доступное к родительскому контроллеру
$urlRouterProvider.otherwise('/');
$stateProvider
.state('home', {
url: '/',
templateUrl: 'app/components/home/home.html',
controller: 'HomeController'
})
.state('admin', {
url: '/admin',
templateUrl: 'app/components/admin/admin-dashboard.html',
controller: 'AdminCtrl'
})
.state('admin.page-1', {
templateUrl: 'app/components/admin/page-1/page-1.view.html',
controller: 'AdminCtrl'
})
То, что происходит, хотя admin.page-1
вид загружается правильно внутри admin
взгляд, кажется, не имеют доступа к AdminCtrl
.
Это контроллер:
(function() {
'use strict';
angular
.module('peaches')
.controller('AdminCtrl', Controller);
Controller.$inject = ['$scope'];
function Controller($scope) {
var vm = this;
vm.test = "Hello."
console.log(vm.test);
vm.organization = {
name: "Western Fund"
};
activate();
function activate() {
}
}
})();
console.log(vm.test)
ДЕЛАЕТ работу, когда я иду в admin.page-1
, но это не похоже, чтобы загрузить в моей вложенной зрения, page-1.view.html
здесь:
<div class="col-xs-12">
<h1>{{vm.test}}</h1>
</div>
Что я делаю неправильно?
'vm' может быть не указано. Попробуйте добавить 'controllerAs: 'vm'' в свой провайдер маршрута для вашей страницы –
вы используете controllerAs в своем HTML, но я не вижу никакой конфигурации для этого в определении вашего маршрутизатора – dhavalcengg
Я не настраивал controllerAs где-нибудь, я думал, что ui.router позаботился об этом автоматически при использовании var vm = this. Это действительно проблема. – Tiago