Моего AngularJS код услуги -Почему AngularJS меняет значения объектов?
this.getEducation = function (id) {
var url = 'SOME_URL/?party_id=' + id;
var deferred = $q.defer();
$http.get(url).
success(function (data, status, headers, config) {
console.log(data);
deferred.resolve(data);
}).
error(function (data, status, headers, config) {
console.log("could not get education info");
deferred.reject(data);
});
return deferred.promise;
}
Теперь моя служба возвращает данные, как это -
[
{
"id": 22,
"party_id": 9,
...
"university": "UoP",
"created_at": "2015-07-13 17:09:52",
"degree": "BE"
},
{
"id": 23,
"party_id": 9,
...
"university": "UoP",
"created_at": "2015-07-13 17:11:06",
"degree": "ME"
}
]
Теперь вот проблема - когда data
разрешается в обещании, содержит следующий массив -
[
{
"id": 22,
"party_id": 9,
...
"university": "UoP",
"created_at": "2015-07-13 17:09:52",
"degree": "BE"
},
{
"id": 23,
"party_id": 9,
...
"university": null,
"created_at": "2015-07-13 17:11:06",
"degree": null
}
]
Итак, мой вопрос: WHY AngularJS устанавливает некоторые значения элементов массива в null?
P.S. Я использую данные, полученные этим контроллером, назначая его переменной области видимости и выполняя ng-repeat в формах.
Edit: Мой контроллер код выглядит следующим образом
$scope.educationInformations = [];
$scope.setEducation = function() {
EducationProvider.getEducation(id).then(
function (educations) {
angular.forEach(educations, function(education){
console.log(education);
$scope.educationInformations.push({education:education});
console.log($scope.educationInformations);
})
});
};
ЭТО работает (журнал консоли является точным)
Теперь это мой код шаблона. Когда это используется,
<div ng-repeat="educationInfo in educationInformations">
<input-text ng-model="educationInfo.education.university"></input-text>
</div>
Теперь input-text
директива создана мной .. Директива код -
.directive('inputText', function() {
return {
templateUrl: 'views/inputText.html',
restrict: 'E',
scope: {
ngModel: '='
}
};
});
шаблон Директива
<input class="form-control"
ng-model="ngModel" ng-init="ngModel = null">
У меня с трудом верится, что угловая причина этого. Требуется дополнительная отладка. –
Вы просматривали данные, возвращаемые с вашего запроса '$ http.get', проверяя фактический ответ? У этого есть 'null'? –
- это то, что ожидает подтверждения данных или просто то, что вы предполагаете? –