Я хочу изменить значение ng-model (степень) на id (степень_ид) в моем шаблоне следующим образом
<md-select flex class="md-select-form" ng-model="education.degree" placeholder="Degree" save-id required-param="{{education.degree_id}}">
<md-option ng-value="degree" ng-repeat="degree in ['High School', 'Associates Degree', 'Bachelor Degree', 'Masters Degree', 'M.B.A', 'M.D', 'Ph.D', 'other']">{{degree}}</md-option>
</md-select>
Я использовал директиву (save-id) для этого синтаксического анализа в моем контроллере, и я вытащил данные службы степени и привязал соответствующий идентификатор. Код следующий
.directive('saveId', function(Profile){
return {
require: 'ngModel',
scope: {
requiredParam:'@'
},
link: function(scope, element, attrs, ngModel) {
console.log("initial loading");
// view --> model (change to string)
ngModel.$parsers.push(function(viewValue){
var id = -1;
var keepGoing = true;
Profile.getDegreeList().then(function(data) {
angular.forEach(data, function(ob){
if(keepGoing) {
if(ob.degree == viewValue){
id = ob.degree_id;
keepGoing = false;
}
}
});
//console.log(id); // it gives updated value
});
console.log(id); // it gives -1
return id;
});
}
};
})
Я обновил значение модели, как указано выше, проблема в том, что в пределах доступно только обновленное значение.
Профиль.getDegreeList(){ }
Из этой функции значение равно -1, что здесь не так? Пожалуйста, дайте мне решения ??
link
. - person Spikee   schedule 07.12.2015