在AngularJS 1.6.2中没有调用$ formatters和$ parsers

时间:2017-03-30 13:39:48

标签: angularjs angularjs-directive angularjs-ng-model angularjs-components angularjs-1.6

  

@version angularjs 1.6.2

我正在尝试做一些格式化程序和解析器,以便为我真正庞大的项目提供通用输入/输出。

用例:

我有一个需要ngModelController的自定义组件,但是当我在视图中使用带有属性指令的组件时;这也需要ngModel添加$ parser或$ formatters;但是当值变为组件时,不会调用$ formatters或$ parsers赋值。

我想要的逻辑

组件:ArtistSelect
指令(解析器):ngObject ng-object-formatter =“attribute_object”ng-object-parser =“attribute_object” 查看:

<artist-select ng-model="model.artist" ng-object ng-object-formatter="id_artist"></artist-select>

我希望model.artist的格式如下:{id_artist:integer}而不是整数。

  

Angular doc:请注意,绑定时不会调用$解析器   ngModel表达式以编程方式更改。

  

Angular Doc :由于ng-model不进行深度监视,因此仅在调用$ render()时调用   $ modelValue和$ viewValue的值实际上是不同的   他们以前的价值观如果$ modelValue或$ viewValue是对象   (而不是字符串或数字)然后$ render()将不会被调用   你只需要更改对象的属性。

如何让它发挥作用?

工作伙伴: Behavior

也许我错过了一些东西,也许我正在过度思考这些事情,或许这是不可能做到的。

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我发现它是在我的$ doCheck()中,我做了一张从未实现的检查。