2013-03-19 31 views
2

我有項目,他們的JSON對象看起來有點像這個Angular.js - NG-重複內當前選定的選項的值

{ 
    'id': 5, 
    'activityId': 1 
} 

然後我有活動,他們的JSON對象看起來像這樣

{ 
    'id': 1, 
    'name': 'Activity name', 
    'rate': 1200 
} 

現在我渲染項這樣

<tr ng-repeat="entry in entries"> 
    <td> 
     <activities></activities> 
    </td> 
    <td> 
     // here's supposed to be the rate 
    </td> 
</tr> 

,其中活動是一個指令,它看起來如T他的

app.directive("activities", function() { 
    return { 
     restrict: 'E', 
     template: '<select ng-model="entry.activityId" ng-options="a.id as a.name for a in activities"></select>' 
    } 
}); 

現在我需要做什麼,以便能夠打印我的ng-repeat內的速率?由於它是指令內的東西的屬性,但我需要將它打印在指令外。

謝謝..

回答

1

你可以使用:

{{(activities | filter:{id: entry.activityId})[0].rate}} 

雖然我覺得這有點難看。更好的方法是直接添加活動作爲實體的屬性,也許在加載兩個數據集之後。另一種方法是自制的過濾器也會檢查錯誤(例如,找不到活動ID等)。

http://plnkr.co/edit/4ljEdDFPBpOzueFuI6FT

+0

所以在我的控制我將加載項直通項目和活動,然後循環和增加活動的每個條目。但我不得不使用一種相同的過濾器有太多,就沒有我? – foxx 2013-03-19 14:55:51

+0

如果我在我的控制器中循環輸入條目,並且從id == activityId中複製了活動的速率,然後選擇更改指令,我會更新它? – foxx 2013-03-19 15:00:31

+1

@foxx是,無論是在服務中,還是在控制器循環中通過條目並分配正確的活動。爲此,您基本上可以使用與我的答案中相同的構造。這更好的原因是因爲循環只進行一次,而不是無數次(更新等)。關於你的第二個評論。我不會將速率複製到條目中,因爲這是冗餘數據。 – Yoshi 2013-03-19 15:07:36