2013-10-16 145 views
1

我試圖做一個指令,插入輸入後(用指令標記)的元素,但也更新來自插入元素的輸入。AngularJS:更新模型傳遞給指令

angular.module('afterDir', []) 
.directive('after', function ($compile) { 

    return { 
     require: 'ngModel', 
     link: function (scope, element, attrs, ngModel) { 

      scope.clickHandler = function (index) { 

       console.log(index); 
       ngModel.$setViewValue("something"); 

      } 

      var content = angular.element('<ul><li ng-click="clickHandler()">after</li><li ng-click="clickHandler()">after too</li></ul>'); 
      content.insertAfter(element); 
      $compile(content)(scope); 

     } 
    } 
}); 

點擊處理程序觸發但模型不更新,是否還有其他需要調用來更新模型?謝謝!

回答

2

如果添加 ngModel。$渲染() 您 $ setViewValue後() 你應該得到你所需要的。

這是一個plunkr。 http://plnkr.co/edit/nZgMiZZD4Vna6vMb4LZr

對於一些解釋,$ setViewValue將更新控制器的內部viewValue,如果需要它會弄髒窗體,它將更新內部modelValue以及模型本身。

$ render實際上將採用該內部viewValue並將其推送到DOM。

+0

非常感謝! – kreek