角度控制器范围与HTML

时间:2017-02-11 19:43:15

标签: angularjs angularjs-scope

我在控制器`

中有这个代码
(function () {
'use strict';
var LoginController = function($scope, $http, $timeout,$location,User) {
    $scope.user = {};
    $scope.flags = {
        error: false,
        rememberMe: true
    };
    $scope.signin = function() {
        $scope.errorMsg=false;
        $scope.successMsg=false;
        $scope.flags.loginInProgress=true;

        User.login($scope.user.password,$scope.user.email)
            .then(function(response) {

                if (response.data.success) {
                    $scope.successMsg=response.data.message;

                    $scope.flags.loginInProgress=true;
                    $timeout(function () {
                       $location.path('shop');
                    },2000);
                }else{
                    $scope.flags.loginInProgress=false;

                    $scope.errorMsg=response.data.message;

                    $scope.flags.error = true;
                };
            });
    };
    if (User.isLoggedIn()) {
        User.getUser().then(function (response) {
                $scope.user=response.data.user;
        })

    } else {
        $location.path('login');
    }
    $scope.logout=function () {
        User.logout();
        $timeout(function () {
            $location.path('home');
        },2000);
    };
};

LoginController.$inject = [
    '$scope',
    '$state',
    '$timeout',
    '$location',
    'User'
];

angular
    .module('pharmacy')
    .controller('LoginController', LoginController)
}());`

我使用ui-router并在页面中使用{{user.name}},其中LoginController被声明它正在工作,但是我使用{{LoginController.user.name}},其中没有声明控制器它没有'工作。

可能是什么问题?

2 个答案:

答案 0 :(得分:0)

尝试使用angular 1.5

提供的 controllerAs 语法
quantmod

答案 1 :(得分:0)

您只能在该控制器所在的视图中访问控制器的范围。如果您想在应用程序的其他位置访问用户的信息,您应该将其存储在其他地方,例如提供商(例如工厂)。

检查以下jsbin:http://jsbin.com/vomifoyuqo/1/edit?html,js,console

display(wait for 2000)
display(wait for 2000)
display(wait for 2000)
display(wait for 2000)