Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS:控制器未获取更新的出厂值_Javascript_Angularjs_Angularjs Controller_Angularjs Factory - Fatal编程技术网

Javascript AngularJS:控制器未获取更新的出厂值

Javascript AngularJS:控制器未获取更新的出厂值,javascript,angularjs,angularjs-controller,angularjs-factory,Javascript,Angularjs,Angularjs Controller,Angularjs Factory,我正在更新工厂中的对象属性,但它似乎没有更新控制器中引用的属性 假设我有一个类似这样的工厂…… app.factory('User', function ($http) { $http.defaults.useXDomain = true; var User = { Name: "", JobTitle: "", isloaded: false }; User.GetUser = function (ID) {

我正在更新工厂中的对象属性,但它似乎没有更新控制器中引用的属性

假设我有一个类似这样的工厂……

app.factory('User', function ($http)
{  
 $http.defaults.useXDomain = true;

    var User = {
        Name: "",
        JobTitle: "",
        isloaded: false
    };

User.GetUser = function (ID)
{
       $http(
            {
                url: "webservice uri",
                method: "GET"
            }
        ).success(function(data, status, headers, config)
        {               
            User.isloaded= true;

        }).error(function(data, status, headers, config)
        {

        })      
}
return User;
});
属性“isloaded”最初设置为false,然后一旦$http调用通过成功回调,它最终设置为false

然后我有一个控制器,看起来像

controllers.DefaultCtrl = function($scope, User)
{ 
    $scope.showMessage = User.isloaded;
    $scope.getUser = function ()
    {
        User.GetUser("11111");
    }
    $scope.getUser();   
    }
与此html关联的

<h1>{{showMessage.isloaded ? 'success' : 'Loading...'}}</h1>
{{showMessage.isloaded?'success':'Loading…}

最后,我希望它说“成功”,但是,html中的文本永远不会更改。问题是您正在分配一个原语:

 $scope.showMessage = User.isloaded;
showMessage
被指定为false,它没有“指向”isloaded属性

您可能应该做的是将
用户
设置为范围变量,例如:

controllers.DefaultCtrl = function($scope, User)
{ 
  $scope.user = User;
  $scope.user.getUser("11111");   
}
然后在html中,您可以执行以下操作:

<h1>{{user.isloaded ? 'success' : 'Loading...'}}</h1>
{{user.isloaded?'success':'Loading…}