angularjs & ui-router - Почему домашний контроллер не работает?

0

люди.

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

Я думаю, что определение контроллера не в том месте, но что-то, я не знаю, где его разместить.

Помощь - это все, что я прошу.

angular
	.module("uiRouterSample",['ui.router'])
	.config(function($stateProvider, $urlRouterProvider){
		$urlRouterProvider.otherwise("/");

		$stateProvider
			.state('home', {
				url: '/',
          controller: ['$scope', '$state',
              function ($scope,   $state) {
                 alert("Hola")
              }]
			})
			.state('first', {
				url: '/first',
                views:{
                  "content":{
                    template:'<p>I\'m on the first page!</p>'
                  }
                }
			})
			.state('second', {
				url: '/second',
                views:{
                  "content":{
                    template:'<p>I\'m on the second page!</p>'
                  }
                }
			});
	});
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.8/angular.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.3.1/angular-ui-router.js"></script>
<div ng-app="uiRouterSample">
  <h1>Hello!</h1>
  <a ui-sref="first">Go to first</a> | 
  <a ui-sref="second">Go to second</a>
  <ui-view name="content"/>
</div>
  • 1
    Да, это неправильное место для определения контроллера. он должен быть в другом файле с уникальным именем. и это имя должно быть в вашем $stateProvider . Также я думаю, что вам понадобится другой пользовательский ui-view без «контента», потому что дома нет имени представления
  • 0
    О, чувак, ты прав, это работает на меня. Теперь, я был бы неправ, если бы я обернул весь корень приложения в пустой пользовательский ui-view ???
Показать ещё 2 комментария
Теги:
angular-ui-router

3 ответа

0

Учитывая идеи Пауло Гальдо Сандалова, я достиг такого решения.

angular
	.module("uiRouterSample",['ui.router'])
    .run(['$rootScope',function($rootScope){
        //global handlers and properties
        $rootScope.origin = "I come from $rootScope!";
    }])
	.config(function($stateProvider, $urlRouterProvider){
		$urlRouterProvider.otherwise("/");

		$stateProvider
			.state('home', {
				url: '/',
          controller: ['$scope', '$state',
              function ($scope,   $state) {
                 alert("Hola")
              }]
			})
			.state('first', {
				url: '/first',
                views:{
                  "content":{
                    template:'<p>I\'m on the first page!<hr/>{{origin}}</p>'
                  }
                }
			})
			.state('second', {
				url: '/second',
                views:{
                  "content":{
                    template:'<p>I\'m on the second page!<hr/>{{origin}}</p>'
                  }
                }
			});
	});
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.8/angular.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.3.1/angular-ui-router.js"></script>
<div ng-app="uiRouterSample">
  <ui-view>
    <h1>Hello!</h1>
    <a ui-sref="first">Go to first</a> | 
    <a ui-sref="second">Go to second</a>
    <ui-view name="content"/>
  </ui-view>
</div>
0

В этом формате должно быть определено исходное состояние, которое вы определили.

.state('home', {
          url: '/',
          views:{
              "content":{
                  controller: ['$scope','$state',function ($scope,$state) {
                      alert("Hola")
                  }]
              }
          }

      })
0

На самом деле, похоже, что ты далеко. Здесь Угловая документация для настройки контроллера, который может сделать вещи более чистыми.

Похоже, что бит не работает, это предупреждение. Если вы хотите открыть окно оповещений, вы должны посмотреть здесь документацию по углу.

И вот предыдущий вопрос, спрашивающий, как это сделать при загрузке страницы, вместо того, чтобы использовать кнопку, как в документации.

  • 0
    если вы имеете в виду $ window, не волнуйтесь, я знаю об этом. Спасибо за вещь контроллера.
  • 0
    Ах я вижу. Np. Вы также можете просто добавить ссылку на приложение в верхней части HTML-документа, например, так: <html ng-app="app"> прямо под типом документа, тогда вы можете просто обернуть вещи, которым нужен доступ к контроллерам, в <div ng-controller="appController"></div> и сделать ng- <div ng-include="'/path/to/page1.html'"></div> для добавления нескольких просмотров страниц: <div ng-include="'/path/to/page1.html'"></div> тогда вы можете иметь отдельные представления папка со всеми вашими страницами в нем. Что заставляет вещи выглядеть чище. Удачи!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню