ui.router меняет состояние, но ui-view ничего не отображает?

#javascript #angularjs #angular-ui #angular-ui-router #angularjs-routing

#javascript #angularjs #angular-ui #angular-ui-router #angularjs-маршрутизация

Вопрос:

Хотя состояния меняются успешно, я не могу обновить пользовательский интерфейс:

HTML

 <a ui-sref="promo.foo">Foo state</a>
<a ui-sref="promo.bar">Bar state</a>

<div ui-view=""></div>
  

JavaScript

 $urlRouterProvider.otherwise("/");

$stateProvider
    .state('promo', {
               url: "/",
               abstract: true
           })
    .state('promo.foo', {
               url: "promo/foo",
               template: "'<h3>Foo</h3>'",
               controller: function($scope) {
                   $scope.value = 'foo';
               }
           })
    .state('promo.bar', {
               url: "promo/bar",
               template: "'<h3>Bar</h3>'",
               controller: function($scope) {
                   $scope.value = 'bar';
               }
           })
  

Plnkr (со стилем начальной загрузки)

Я также попытался установить ui-view равным определенным состояниям; и динамически изменять его RHS с моего $scope .

Комментарии:

1. Попробуйте не указывать ui-view значение. <div ui-view></div>

2. Пробовал; никаких изменений. AFAIK attr="" равно attr .

Ответ №1:

Поскольку вы пытаетесь создать вложенные представления, в домашнем состоянии должен быть шаблон с элементом пользовательского интерфейса. Кроме того, у вас есть как двойные, так и одинарные кавычки в шаблоне

 template: "'<h3>Foo</h3>'"
  

Это Планкер, что вы имели в виду?

Ответ №2:

Дайте вашему абстрактному состоянию шаблон, содержащий, внутри которого будут отображаться ваши подчиненные состояния… например http://scotch.io/tutorials/javascript/angular-routing-using-ui-router

Комментарии:

1. Да, это то, что я пробовал ранее ночью. Это также не сработало. Могу ли я разработать тестовый пример из этого, показывающий проблему, когда я вернусь через ~ 4 часа.

2. ну, я попробовал, ссылка на plunker, которую вы предоставили, работает