2015-05-04 113 views
1

我有一个$ scope.currentUser对象和嵌套OwnedCompany对象,像这样:

app.controller 'dashboardsCtrl', ($scope, Api, Auth) -> 
    $scope.currentUser = Api.User.get(id: Auth.user()) 
    $scope.ownedCompany = $scope.currentUser.owned_company 

{{currentUser}}回报:

user: { 
    "name": "Ryan", 
    "owned_company":{"name":"XYZ"} 
} 

{{currentUser.owned_company}}回报:

{"name":"XYZ"} 

但是{{ownedCompany}}返回零。


我该如何获得$scope.ownedCompany = $scope.currentUser.owned_company


解决方案

按@mohamedrias的回答,

app.controller 'dashboardsCtrl', ($scope, Api, Auth) -> 
    Api.User.get(id: Auth.user()).$promise.then (currentUser) -> 
    $scope.currentUser = currentUser 
    $scope.ownedCompany = currentUser.owned_company 

{{ownedCompany}}回报:

{name:"XYZ"} 
+3

http://jsfiddle.net/arunpjohny/jpno6ft2/1/ –

+0

你确定写变量名没有错?或者在字符外壳? –

+0

如果'currentUser.owned_company'在运行时更改,则使用watch或在更改发生后设置值 - http://jsfiddle.net/arunpjohny/jpno6ft2/2/ –

回答

2
$scope.currentUser = Api.User.get(id: Auth.user()) 

这是一个异步CAL l从您获取当前用户详细信息的位置开始。所以它会稍后再解码。

要么你必须使用承诺的广告投入

$scope.ownedCompany = $scope.currentUser.owned_company 

里面的then块。

否则,在该对象上注册watch并执行分配。

+0

这很好用。我会将解决方案添加到我的问题中。感谢穆罕默德。 –