2016-09-04 8 views
-1

Вот мой: config.router.jsangularjs два нг диспетчерам разрешить конфликт в HTML разметке

app.config(['$stateProvider', '$urlRouterProvider', '$controllerProvider', '$compileProvider', '$filterProvider', '$provide', '$ocLazyLoadProvider', 'JS_REQUIRES', 
function ($stateProvider, $urlRouterProvider, $controllerProvider, $compileProvider, $filterProvider, $provide, $ocLazyLoadProvider, jsRequires) { 

    app.controller = $controllerProvider.register; 
    app.directive = $compileProvider.directive; 
    app.filter = $filterProvider.register; 
    app.factory = $provide.factory; 
    app.service = $provide.service; 
    app.constant = $provide.constant; 
    app.value = $provide.value; 

    // LAZY MODULES 

    $ocLazyLoadProvider.config({ 
     debug: false, 
     events: true, 
     modules: jsRequires.modules 
    }); 

    // APPLICATION ROUTES 
    // ----------------------------------- 

    $urlRouterProvider.otherwise('/login/signin'); 
    // 
    // Set up the states 
    $stateProvider.state('app', { 
     url: "/app", 
     templateUrl: "assets/views/app.html", 
     resolve: loadSequence('modernizr', 'moment', 'angularMoment', 'uiSwitch', 'perfect-scrollbar-plugin', 'toaster', 'ngAside', 'vAccordion', 'sweet-alert', 'chartjs', 'tc.chartjs', 'oitozero.ngSweetAlert', 'chatCtrl'), 
     abstract: true 
    }).state('app.dashboard', { 
     url: "/dashboard", 
     templateUrl: "assets/views/dashboard.html", 
     resolve: loadSequence('jquery-sparkline', 'dashboardCtrl'), 
     title: 'Dashboard', 
     ncyBreadcrumb: { 
      label: 'Dashboard' 
     } 
    }) 
... 


loginCtrl.js

app.controller('LoginCtrl', ["$scope", "alert", "auth", "$state", "$auth", "$timeout", function ($scope, alert, auth, $state, $auth, $timeout) { 
    $scope.submit = function() { 
     $auth.login({ 
      email: $scope.email, 
      password: $scope.password 
     }) 
      .then(function(res) { 
       var message = 'Thanks for coming back ' + res.data.user.email + '!'; 
       if (!res.data.user.active) 
       {$auth.logout(); 
        message = 'Just a reminder, please activate your account soon :)';} 
       alert('success', 'Welcome', message); 
       return null; 
      }) 
      .then(function() { 
       $timeout(function() { 
        $state.go('main'); 
       }); 
      }) 

      .catch(handleError); 
    } // submit function for login view 
    function handleError(err) { 
     alert('warning', 'oops there is a problem!', err.message); 
    } 
}]); 


main.js

var app = angular.module('myApp', ['my-app']); 
app.run(['$rootScope', '$state', '$stateParams', 
function ($rootScope, $state, $stateParams) { 

    // Attach Fastclick for eliminating the 300ms delay between a physical tap and the firing of a click event on mobile browsers 
    FastClick.attach(document.body); 

    // Set some reference to access them from any scope 
    $rootScope.$state = $state; 
    $rootScope.$stateParams = $stateParams; 

    // GLOBAL APP SCOPE 
    // set below basic information 
    $rootScope.app = { 
     name: 'My App', 
     author: 'example author', 
     description: 'My Platform', 
     version: '1.0', 
     year: ((new Date()).getFullYear()), 
     isMobile: (function() { 
      var check = false; 
      if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) { 
       check = true; 
      }; 
      return check; 
     })() 
    }; 
    $rootScope.user = { 
     name: 'Peter', 
     job: 'ng-Dev' 

    }; 
}]); 

проблема, когда я добавить ng-controller="loginCtrl" в мой логин DIV на HTML-файл для входа в систему, это работает. Но у меня есть еще один div чуть ниже регистрационного div:

<div class="copyright" > 
    {{app.year}} &copy; {{ app.name }} by {{ app.author }}. 
</div> 

Это не работает! тем не менее, у меня есть аналогичный выше регистрационный div, он работает:

<div class="logo"> 

    <img ng-src="{{app.layout.logo}}" alt="{{app.name}}"/> 
</div> 

где проблема? Как его решить? благодаря

ответ

1

, если вы используете угловую ui-router, это не обязательно для добавления ng-controller="loginCtrl" к вашим DIVs вручную, вместо того, чтобы добавить controller свойства в вашем $stateProvider.state

пример:

.state('app.dashboard', { 
     url: "/dashboard", 
     templateUrl: "assets/views/dashboard.html", 
     title: 'Dashboard', 
     controller: 'dashboardCtrl', 
     resolve: { 
        deps: ['$ocLazyLoad', function ($ocLazyLoad) { 
         return $ocLazyLoad.load('path/to/your/controller.js'); 
        }] 
       }, 
     ncyBreadcrumb: { 
      label: 'Dashboard' 
     } 
    }) 

при изменении состояния обычно взгляды меняются, это правильно? установка контроллеров «на лету» может работать не так, как вы ожидаете.

Оформить заказ documentation