2014-08-28 3 views
0

Я создал виджет jQuery, который в основном добавляет больше функциональности и стилей CSS в собственный jQuery UI Datepicker. Я использую опцию onSelect для datepicker для обновления <input> соответственно. Проблема в том, что даже если входные данные меняются, модель в области $ не изменяется. Я знаю, что мне нужно использовать $ scope. $ Apply() каким-то образом уведомить угловой, что вход изменился.

Я пробовал следующее, но это не сработало.

this.options.onSelect = function (dateText, inst) { 


       $el.val(dateText); 
       that.$scope.$apply(); // This isn't working. I think I need to do something else 
       that.wrap.hide(); 


       jQuery(document).find('.iconalt').hide(); 


       if (that.options.afterSelect !== undefined) { 
        that.options.afterSelect(); 
       } 
      } 
+0

Это должно быть очень распространенной проблемой ... правильно? Как никто не знает? Я делаю это неправильно? –

+1

Если вы установили значение с помощью '$ el.val (dateText),' ваш ngModel не изменится и вам даже не понадобится '. $ Scope. $ Apply();' в этом случае. Я думаю, вам нужно обновить модель, а затем сделать scope.apply() – PSL

+0

, если вам действительно нужно изменить DOM, создайте настраиваемую угловую директиву. также: http://stackoverflow.com/questions/14994391/how-do-i-think-in-angularjs-if-i-have-a-jquery-background – mb21

ответ

0

Я смог найти решение. Мне нужно было обновить модель до вызова $ apply()

this.options.onSelect = function (dateText, inst) { 


       $el.val(dateText); 
       that.$scope.date = dateText; // Adding this worked 
       that.$scope.$apply(); 
       that.wrap.hide(); 


       jQuery(document).find('.iconalt').hide(); 


       if (that.options.afterSelect !== undefined) { 
        that.options.afterSelect(); 
       } 
      }