这个控制器功能有什么问题吗?

时间:2017-03-08 10:54:42

标签: javascript angularjs ionic-framework

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

登录控制器:

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!'
        })
    })
  }

});

ROUTERS 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 个答案:

答案 0 :(得分: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 :(得分:0)

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

此代码创建名为 starter 的角度应用的实例。你应该只创建一次应用程序实例。但你在这里创造了两次。

仅使用

angular.module('starter')

在声明控制器或配置时使用该应用程序。但是你应该小心,首先创建实例然后使用它。 这意味着

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

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

答案 2 :(得分:0)

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

angular.module('starter') 

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

这就是你需要使用

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

了解详情here