angular.js
angular.js copied to clipboard
ngModelController: trigger change when only property of model changes
Description If you have an input box that is associated with a model that is an array (or an object), the update machinery ($formatter pipeline and so on) is not triggered if only a property on the array or object changes. This is because ngModelController watches the model without checking objectEquality.
The multiple select
input has a kind of hack that triggers a call to $render if the model updates a property but this fails to call the $formatter pipeline. If we push a new option into the array then the select renders OK but a required
validator would fail to update.
Reproduction See this http://plnkr.co/edit/yNFihkAgrVhHYx7lOtMc?p=preview.
Suggested Fix
Asking the NgModelController
to watch with object equality would probably be the simplest solution. There may be a performance impact, though since most models are not objects or arrays then this should short-circuit quite quickly for those values.
Angular Version: 1.2.5+
OS: all
Related to : #5337
it seems like this issue is still open. I would like to have a go at fixing it. Is there any new information or planning available for this issue?
I thought, it might be possible to make the deep-watching configurable through the ngModelOptions (default = false i.e. no deep watching).
It be cool if the option allowed for either deep equality or for it to use a watchCollection under the hood, this keeps it flexible.
@Narretz @antonkarsten any update on putting this into the next 1.5.x release?