我在控制器中遇到了对象属性的问题。我的工厂用另一个对象和一个函数返回一个对象。我可以调用该函数,但我无法访问另一个对象属性。这是我的代码:
我的工厂
app.factory('User', function () {
var User = {};
User.get = function () {
// Call the service... done
User.data = response.data;
};
return User;
});
我的控制器
app.controller('Controller', function ($scope, User) {
$scope.user = User;
console.log(user); // print correct one object with
the function get and data object with user data
console.log(user.data); // undefined
});
谢谢,对不起我的英语灾难
答案 0 :(得分:0)
app.factory('User', function () {
var User = {};
User.data=null;
User.get = function () {
// Call the service... done
User.data = response.data;
};
return User;
});

控制器:
app.controller('Controller', function ($scope, User) {
$scope.user = User;
console.log(user);
console.log(user.data); // null,because you did not call the method User.get();
User.get();
console.log(user.data); // this will print the response data which you assign in the User.get() method
});

在您给出的代码中,User.data将提供该对象,但必须先调用User.get()
函数。
抱歉我的英文.....
答案 1 :(得分:0)
你有两个问题。你建立工厂的方式伤害了你。所以我会回到整个工厂,所以你有这个功能。您不必在工厂内定义用户,因为它是工厂的名称(因此它是一个对象)
app.factory('User', function () {
return {
get: function() {
//return API call
};
});
接下来,您将定义$ scope.user然后调用user。您从未定义过用户,只需$ scope.user。此外,您必须在用户中调用get函数以返回数据。它不会是
app.controller('Controller', function ($scope, User) {
$scope.user = User.get();
console.log($scope.user); // This will be the data
});
答案 2 :(得分:0)
是我的错误,我在另一个控制器User.get();中调用,我的问题及时
app.controller('Controller', function ($scope, User) {
$scope.user = User;
setTimeout(function(){
console.log(user.data); // i have data
}, 5000);
});
答案 3 :(得分:0)
使用settimeout
不会自动触发$digest
,而双向数据绑定可能无法识别更新。