2015-06-12 7 views
0

Я пробовал использовать методы DOM и stateProvider.Угловой контроллер, вызываемый дважды

Feed.html

<div class="container-fluid"> 
     <div class="panel panel-card" ng-repeat="post in posts" class="col-lg-12 fadeInUp animated" style="-webkit-animation-delay: {{$index * 0.1}}s; animation-delay: {{$index * 0.1}}s;"> 
      <div class="panel-body bg-primary">{{post.user_id}} from {{post.squad_id}}</div> 
      <div class="clearfix"></div> 
     </div> 
    </div> 

feed.controller.js

(function() { 
    'use strict'; 

    angular 
     .module('app') 
     .controller('FeedController', FeedController); 

    FeedController.$inject = ['$scope']; 
    function FeedController($scope) { 
     console.log($scope); 
    } 

})(); 

routes.config.js

(function() { 
    'use strict'; 

    angular 
     .module('app') 
     .config(routesConfig); 

    routesConfig.$inject = ['$locationProvider', '$stateProvider', '$urlRouterProvider', 'RouteProvider']; 
    function routesConfig($locationProvider, $stateProvider, $urlRouterProvider, Route) { 

     // use the HTML5 History API 
     $locationProvider.html5Mode(false); 

     // Default route 
     //$urlRouterProvider.otherwise('/feed'); 

     // Application Routes States 
     $stateProvider 
     .state('app', { 
      url: '', 
      abstract: true, 
      templateUrl: Route.base('app.html'), 
      resolve: { 
      _assets: Route.require('icons', 'toaster', 'animate') 
      } 
     }) 
     .state('app.feed', { 
      url: '/feed/', 
      templateUrl: Route.base('feed.html'), 
      controller: "FeedController", 
      resolve: {} 
     }) 
    } 

})(); 

Другой ш ау было вставить ng-controller="FeedController" в верхний DIV в feed.html и закомментируйте controller: "FeedController", от routes.config.js

app.html

<!-- top navbar--> 
<header ng-include="'templates/top-navbar.html'" ng-class="app.theme.topbar"></header> 
<!-- Sidebar--> 
<aside ng-include="'templates/sidebar.html'" ng-class="app.theme.sidebar"></aside> 
<!-- Main--> 
<section> 
    <!-- Content--> 
    <div ui-view="" autoscroll="false" ng-class="app.views.animation" class="app"></div> 
</section> 
<!-- Page footer--> 
<footer ng-include="'templates/footer.html'"></footer> 

Оба эти методы console.log ($) объем в два раза с разными $ идентификаторами. Это происходит при перезагрузке страницы и изменении состояния.

У кого-нибудь есть идеи?

+0

Я думаю, что вы обертываете тело только 'FeedController'. –

+0

Что вы имеете в виду? –

+1

Что такое 'RouteProvider'? –

ответ

0

Я не могу проверить это, но вы можете попробовать просто прокомментировать строку .controller('FeedController', FeedController); в feed.controller.js.

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

+0

Это то, что определяет контроллер в приложении. В противном случае, я получаю '[ng: areq] Аргумент 'FeedController' не является функцией, получил неопределенное' ** редактирование: ** Я должен добавить, что эта ошибка произошла дважды. –

+0

Хммм, ну может быть, это призыв к 'angular.module' - вы делаете это дважды. не знаю, как это работает, но я всегда устанавливаю это для переменной и использую ее: 'var app = angular.module ('app'); app.controller ... и app.config ... ' – swatkins

+0

Просто заменили все вхождения angular.module (" app ") с приложением. Все еще происходит. –

0

Нет причин для этого. Но, я подозреваю, что под-состояние url. Попробуйте удалить последний бар.

+0

Что вы подразумеваете под последним баром? –

+0

url: '/ feed /', но url: '/ feed' достаточно – otaviodecampos

+0

Добавление косой черты было исправлением, которое я прочитал на другом потоке SO. Это несущественно. –

Смежные вопросы