Я бы создал одну директиву, которая получает свойство моей модели и меняет это значение, но когда в моей директиве я назначаю значение, он перезаписывает весь объект , полученный async Call: у меня есть модель объектаИзменение свойств NgModel в директиве override all scope angularJs
object: {
phone:"123456",
name: "Jhon",
surname: "Smith"
}
и я хотел бы изменить номер телефона, и у меня есть мой-HTML
<input type="text" id="phone" class="form-control" data-ng-model="object.phone" custom-number>
и моя директива:
.directive('customNumber', [ '$timeout', function ($timeout) {
return {
restrict: 'A',
require: 'ngModel',
scope: {
bindedModel: "=ngModel"
},
link: function(scope, element, attrs) {
scope.bindedModel= "0000";
}
}
И моя модель объект его перезаписать только телефон собственности, так что теперь моя модель:
object: {
phone: "0000"
}
Почему перезаписать весь мой объект и как можно Я избегаю этого?
EDIT
Если я изменить свой HTML в
<custom-number model="object.phone" />
И моей директиве:
var tpl = ' <input type="text" id="id" class="form-control" ng-model="model">';
var init = 0;
return {
restrict: 'EA',
scope: {
model: '=',
id:'='
},
template: tpl,
link: function(scope, element, attrs) {
scope.$watch('model', function(newValue, oldValue) {
if (oldValue != newValue && init == 0){
scope.model = "0000"
}
});
}
};
Это изменит только правильное значение, но я бы сделал это только первые время
Здравствуйте, спасибо. Проблема может быть в том, что значение объекта асинхронно, потому что вход внутри ng-repeat? – LorenzoBerti
Я редактирую свой вопрос – LorenzoBerti
Я отредактировал свой ответ после вашего редактирования – mpdev7