2015-05-31 3 views
0

У меня есть angularjs объект вроде этого:Как ссылаться на значение объекта по свойству?

$scope.afterLogin = [ 
    {value: 'customers|follow-ups', text: 'Follow Ups'}, 
    {value: '', text: 'not set'} 
]; 

Я пытаюсь использовать его с xeditable следующим образом:

<span 
    editable-select="user.default_module" 
    e-ng-options="s.value as s.text for s in afterLogin" 
    e-name="default_module" 
    e-form="rowform">{{s[user.default_module] as s.text for s in afterLogin}}</span> 

То, что я пытаюсь, чтобы показать текст-свойство в afterLogin, что определяется user.default_module. Что я делаю не так? Я получаю ошибки разбора на s [user.default_module] как - как я могу ссылаться на свойство объекта в этой области?

Примечание: это завернуто в ng-repeat="user in users".

ответ

1

Вы пытаетесь отобразить текущее выбранное значение очень сильно. В official example они используют фильтр для этой цели. Тем не менее, вы можете упростить его Builing на value: label карту, т.е .:

$scope.afterLoginLabels = {}; 
for (var i = 0; i < $scope.afterLogin.length; i++) { 
    $scope.afterLoginLabels[$scope.afterLogin[i].value] = $scope.afterLogin[i].text; 
} 

Затем текст значение на дисплее, как:

<span [...]>{{ afterLoginLabels[user.default_module] }}</span> 

См JSFiddle.

Смежные вопросы