AngularJS 1.6.2 中未调用 $formatters 和 $parsers
$formatters and $parsers not called in AngularJS 1.6.2
@version angularjs 1.6.2
我正在尝试做一些格式化程序和解析器,以便为我真正庞大的项目提供通用 input/output。
用例:
我有一个自定义组件,上面需要 ngModelController,但是当我在我的视图中使用带有属性指令的组件时;这也需要 ngModel 添加 $parser 或 $formatters;但是当值更改为组件时,不会调用分配给它的 $formatters 或 $parsers。
我想要的逻辑
组件:艺术家选择
指令(解析器):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 : Note that the $parsers are not called when the bound
ngModel expression changes programmatically.
还有
Angular Doc : Since ng-model does not do a deep watch, $render() is only invoked if
the values of $modelValue and $viewValue are actually different from
their previous values. If $modelValue or $viewValue are objects
(rather than a string or number) then $render() will not be invoked if
you only change a property on the objects.
如何让它发挥作用?
正在工作的笨蛋: Behavior
也许我遗漏了什么,也许我想多了,也许这根本不可能。
非常感谢您的帮助!
我发现它在我的 $doCheck() 中,我进行了一次检查,但从未如此。
@version angularjs 1.6.2
我正在尝试做一些格式化程序和解析器,以便为我真正庞大的项目提供通用 input/output。
用例:
我有一个自定义组件,上面需要 ngModelController,但是当我在我的视图中使用带有属性指令的组件时;这也需要 ngModel 添加 $parser 或 $formatters;但是当值更改为组件时,不会调用分配给它的 $formatters 或 $parsers。
我想要的逻辑
组件:艺术家选择
指令(解析器):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 : Note that the $parsers are not called when the bound ngModel expression changes programmatically.
还有
Angular Doc : Since ng-model does not do a deep watch, $render() is only invoked if the values of $modelValue and $viewValue are actually different from their previous values. If $modelValue or $viewValue are objects (rather than a string or number) then $render() will not be invoked if you only change a property on the objects.
如何让它发挥作用?
正在工作的笨蛋: Behavior
也许我遗漏了什么,也许我想多了,也许这根本不可能。
非常感谢您的帮助!
我发现它在我的 $doCheck() 中,我进行了一次检查,但从未如此。