2017-03-08 86 views
0

当我使用没有控制器的路由器时,我的路由器工作正常,但是当我在其中添加控制器时。那么我的路由器停止工作......任何人都可以告诉我关于我在路由器功能的问题?在这个控制器功能的任何问题?

登录控制器:

angular.module('starter', ['ionic']) 
.controller('LoginCtrl', function($scope, LoginService, $ionicPopup, $state) { 


    $scope.login = function() { 
    console.log("LOGIN user: " + $scope.username + " - PW: " + $scope.password); 

    LoginService.loginUser($scope.username, $scope.password).success(function(data) { 
     console.log("Login Successful"); 
     $state.go('home'); 
    }).error(function(data) { 
     var alertPopup = $ionicPopup.alert({ 
      title: 'Login failed!', 
      template: 'Please check your credentials!' 
     }) 
    }) 
    } 

}); 

路由器CODE

angular.module('starter', ['ionic']) 
.config(function($stateProvider, $urlRouterProvider) { 
     $stateProvider 
      .state('home', { 
       url: '/home', 
       templateUrl: 'page2.html', 
       controller: 'HomeCtrl' 
      }) 
      .state('login', { 
       url: '/login', 
       templateUrl: 'index.html', 
       controller: 'LoginCtrl' 
      }) 

     $urlRouterProvider.otherwise('/login'); 
    }); 
+3

停止工作?控制台中出现任何错误? – lin

+1

如果我使用控制器,那么url就是这样的“http:// localhost:8100 /?” –

+0

如果我不那么它就像这样“http:// localhost:8100 /?重新启动= 769171#/登录“ –

回答

0
angular.module('starter', ['ionic']) 

angular.module('starter') 

是两个完全不同的概念。而[]将该方法转换为setter方法。含义它将创建一个新的入门模块实例。但是如果你不使用第三个括号,它会变成一个getter方法,这意味着它将返回已经声明的模块。

这就是为什么你需要使用

angular.module('starter').controller('', function(){}); 

的详细看here

3

你的控制器错误声明。创建控制器时从您的模块中删除注入器。像

angular.module('starter') 
.controller('LoginCtrl', function($scope, LoginService, $ionicPopup, $state) { 
    //... 
}); 

由于这些原因的东西,最好是有你的模块在不同的文件中创建。所以,你将有

module.js

angular.module('starter', ['ionic']) 

config.js

angular.module('starter').config(function(){}); 

controller.js

angular.module('starter').controller('', function(){}); 
+1

没有必要,如果这确实是该模块的创建 – devqon

+1

你不能有相同的模块创建两次 – mbeso

+1

该死的我看起来不正确,你是正确的,他宣布他的模块两次 – devqon

0
angular.module('starter', ['ionic']) , 

此代码创建角应用程序的一个实例,名为启动器。你应该只创建一个应用程序的实例一次。但是你在这里创建了两次。

只使用

angular.module('starter') 

而宣告控制器或配置来使用该应用。但你应该小心,首先创建实例然后使用它。 表示

angular.module('starter', ['ionic']) 

应在首先执行的部分使用。