model binding not updating when changed with jQuery

This is my HTML:

<input id="selectedDueDate" type="text" ng-model="selectedDate" />

When I type into the box, the model is updated via the 2-way-binding mechanism. Sweet.

However when I do this via JQuery...

$('#selectedDueDate').val(dateText);

It doesn't update the model. Why?


Angular doesn't know about that change. For this you should call $scope.$digest() or make the change inside of $scope.$apply() :

$scope.$apply(function() { 
   // every changes goes here
   $('#selectedDueDate').val(dateText); 
});

See this to better understand dirty-checking

UPDATE : Here is an example


只是使用;

$('#selectedDueDate').val(dateText).trigger('input');

I have found that if you don't put the variable directly against the scope it updates more reliably.

Try using some "dateObj.selectedDate" and in the controller add the selectedDate to a dateObj object as so:

$scope.dateObj = {selectedDate: new Date()}

This worked for me.

链接地址: http://www.djcxy.com/p/23120.html

上一篇: 如何使用ng循环由函数返回的项目

下一篇: 使用jQuery更改模型绑定时不会更新