根据条件

时间:2016-01-06 21:37:00

标签: angularjs

我有一个登录屏幕,当用户输入正确的凭据时,将能够获取JSON数据。目前我还没有真正的API链接。我只是使用脚本文件中的虚拟JSON数据。 loginCtrl将参数传递给'dummydata'工厂,该工厂将发出'GET'请求。成功时,该因子将JSON数据传递给工厂中的'useData'函数。工厂中的此功能是我的ng-view中的所有控制器都使用的功能。

我遇到的问题是所有其他控制器都在调用'​​dummyData.dashboardsData'并且未定义,因为没有人登录将数据传递给该函数。如何防止控制器(例如,navCtrl)在有人登录之前调用工厂?

这是我的索引文件:

<body ng-app="ciscoImaDashboardApp" ng-style="{'background-image': backgroundImg}" ng-controller="loginCtrl">

  <login></login>
  <div ng-view></div>
  <menu></menu>

</body>

这是我的工厂:

angular.module('ciscoImaDashboardApp').factory('dummyData', ['$q', '$http', function($q, $http) {

var apiServices = {};

apiServices.login = function(user,password,callback) {
    $http({method: 'GET', url: 'scripts/services/dummydata.js'})
    .success(function (response) {
        dataStatus = response.success;

        apiServices.useData(response);

        callback(dataStatus);
    })
    .error(function(error) {
        console.log("There was an error: " + error);
    });

};


apiServices.useData = function(response) {
    var data = response.data;

    apiServices.dashboardsData = data;
}


return apiServices;

}]);

这是我的navCtrl:

angular.module('ciscoImaDashboardApp')
.controller('navCtrl', function($scope, navService, $location, dummyData) {

    var data = dummyData.dashboardsData;

});

这是我的loginCtrl:

angular.module('ciscoImaDashboardApp')
.controller('loginCtrl', function ($scope, $rootScope, dummyData, $location) {

    $scope.login = function() {

        var user_email = $scope.email;
        var user_password = $scope.password;

        dummyData.login(user_email, user_password, function (dataStatus) {
            if (dataStatus) {
                console.log("Success!");
                $scope.loggedIn = true;
                $location.path('/welcome');
            } else {
                console.log("Error");
            }
        });

    }

});

0 个答案:

没有答案