2015-06-24 60 views
-1

關鍵我有變量:顯示值,當你知道在AngularJS

$scope.rolesData = [{id : '1', name : 'user'}, {id : '2', name : 'superuser'},{id : '3', name : 'admin'}]; 

而且我從數據庫得到了與整數值,它告訴我什麼是角色的用戶對象。這是從1到3 user.userRole爲1,2或3

$scope.users = adminUserSvc.query(); //From DB 

一切都在選擇幹活罰款:

<tr ng-repeat="user in users"> 
... 
<select class="form-control" ng-model="user.userRole" ng-options="role.id as role.name for role in rolesData"> 
</select> 

但我不知道我該怎麼讓裏面的一樣{ {}}?如果我知道user.userRole給我的ID爲1,那麼我會得到名稱的價值?

這是ngRepeat內:

<div ng-hide="editingUsers[user.userId]">{{rolesDataSOMETHING??}}</div> 

回答

3

好吧,你可以使用這個:

{{(rolesData | filter:{id:user.userRole})[0].name}} 

起初,它過濾rolesData對象 - 然後得到的第一個對象(它應該只有一個,因爲的過濾器)與[0]


老答案(老問題):

你只需要改變你的ng-options,以節省您的模型正確的「東西」!

ng-options="role as role.name for role in rolesData" 

這將節省整個角色對象{id : '1', name : 'user'}user.userRole模式,輸出名稱只使用{{user.userRole.name}}

沒有必要ngRepeat這裏。

+0

對不起,我沒有告訴你,這user.userRole從DB到來,有隻有int從1到3. – Sami

+0

對不起,你能解釋一下嗎?你是否在數據庫的''scope''上設置''user.userRole''? –

+0

不,我有一個我從DB獲得的範圍內的用戶列表。然後我使用ng-repeat來顯示列表中的每個用戶。每個用戶都可以修改。 – Sami

0

您可以使用lodash(http://lodash.com)來查找您要查找的元素。你可能想把它放在控制器上的一個函數中。像

$scope.getName = function(id) { 
    var i = _.findIndex($scope.rolesData, { id: id }); 
    return $scope.rolesData[i].name; 
} 

,然後在模板的東西,你可以在括號中像引用此:

<div ng-hide="edingUsers[user.userId]">{{getName(user.userRole)}}