2016-02-03 3 views
1

им пытается изменить нг-модель значение в пользовательской директиве, но вопрос в том, что я использовал контроллер какУгловые JS - значение изменения модели в пользовательской директиве

<div ng-controller="AreaController as vm"> 
<md-input-container flex="40" class="md-block" on-enter="vm.search()"> 
      <label>Search</label> 
       <md-icon class="material-icons" >search</md-icon> 
      <input type="text" name="search" ng-model="vm.area.searchText" clear-input="vm.getList()"> 
      </md-input-container> 

и в пользовательской директиве, им пытаются очистить вход поле путем изменения значения нг-модели для «», но им не удалось получить значение

var result = scope[attr.ngModel]; 
        var r = $parse(attr.ngModel); 

результат нулевой, как я могу решить эту проблему

любая помощь будет оценена

+0

если вы console.log сфере в вашей директиве вы видите значение для ngModel или clearList? –

ответ

3

Вы можете получить доступ к значению ngModel в пользовательской директиве путем доступа к ngModel контроллеру $viewValue и $modelValue свойства:

angular.module('app').directive('clearInput', clearInputDirective) 

var clearInputDirective = function(){ 
    return { 
     restrict: "A", 
     require: "ngModel", 
     link: function(scope, element, attr, ngModel){ 
     var view_value = ngModel.$viewValue //The actual value from the control's view 
     var model_value = ngModel.$modelValue //The value in the model that the control is bound to. 
     ngModel.$viewValue = 'new value' //set new view value 
     ngModel.$commitViewValue(); //Commit a pending update to the $modelValue 
     } 
    } 

} 
+0

благодарит, что он дает значение, но я пытаюсь обновить его. Я попытался использовать ngModel. $ setViewValue (null); но он не работает так, как ожидалось. он не обновляет значение – Salman

+0

Вы должны зафиксировать изменения после использования 'ngModel. $ setViewValue()'. '$ commitViewValue()' - Зафиксировать ожидающее обновление для $ modelValue –

+0

Вы также можете установить значение параметра прямого значения для параметра 'ngModel. $ viewValue', а затем использовать' ngModel. $ commitViewValue() ' –

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