Я долго пробовал проблему, в которой мне нужно обновить родительский объект из области действия. Мне нужно получить некоторые данные, используя $ http, и приспособить эти данные к свойству в исходном родительском Obj.
Однако после этого представление обновляется, но каким-то образом модель, привязанная к этому виду, становится неопределенной. Поскольку представление обновляется новыми данными, некоторые модели становятся неопределенными после этого.
Только теперь я узнал, что $ http запускает $ digest, поэтому я думаю, что это причина моей проблемы.
Что я могу сделать, чтобы мои модели стали неопределенными, а извлеченные значения оставались неповрежденными в исходном объекте.
Просто для того, чтобы прояснить ситуацию, прежде чем я приложу обратный plnkr. вот что я имею в виду:
У меня есть obj $scope.Obj
. Я связал поля ввода в шаблоне директивы с этим объектом, используя 2-стороннюю привязку, такую как
<input ng-model = Obj.something.something2[$index]/>
Теперь скажем, что я сделал вызов API и обновил my something2 в $ scope.Obj as:
$scope.Obj.something.something2 = APIResponse.something3
Значения от нового объекта something3 видны в пользовательском интерфейсе, но в бэкэнд после этого
$scope.Obj.something.something2[$index]
становится неопределенным.
Pls предлагает возможные причины для этого...
Другие модели становятся неопределенными, потому что вы заменяете объект. Вместо этого вы должны использовать angular.extend
.
angular.extend($scope.Obj.something.something2, APIResponse.something3);
Для получения дополнительной информации см. Ссылку на AngularJS angular.extend API.
models become undefined
. Демо, которое воспроизводит вашу проблему, также поможет<input ng-model = Obj.something.something2[$index]/>
Теперь скажите, что я сделал вызов API и обновил что-то2 в $ scope.Obj as:$scope.Obj.something.something2 = APIResponse.something3
Значения нового объекта something3 видны в пользовательском интерфейсе, но в$scope.Obj.something.something2[$index]
после этого$scope.Obj.something.something2[$index]
становится неопределенным. Просьба предложить возможные причины этого ... если это имеет смысл