我正在更新工厂中的对象属性,它似乎没有更新控制器中引用的属性。
说我有一个看起来像这样的工厂......
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>
最终我希望它能说'成功',然而,文字永远不会改变html
答案 0 :(得分:0)
问题在于您正在分配基元:
$scope.showMessage = User.isloaded;
showMessage
被指定为false,它不是&#34;指向&#34;到isloaded
属性。
您应该做的是将User
设置为范围变量,例如:
controllers.DefaultCtrl = function($scope, User)
{
$scope.user = User;
$scope.user.getUser("11111");
}
然后在你的HTML中你可以做到:
<h1>{{user.isloaded ? 'success' : 'Loading...'}}</h1>