tom*_*lin 19 javascript data-binding angularjs angularjs-ng-change angular-ngmodel
输入如下:
<input type="text" ng-model="repair.test" ng-change="action()" />
Run Code Online (Sandbox Code Playgroud)
在action()当我手动键入和改变输入被执行.但是,如果我通过编程方式通过其他函数更改repair.test值,则不会触发ng-change的操作.我已阅读角度教程,这可能是预期的行为.
https://docs.angularjs.org/api/ng/directive/ngChange
"当值变化来自模型时,不会评估表达式." < - 我也需要这个.当模型以任何方式改变时,如何在控制器中触发动作?(输入输入或任何其他功能)
谢谢您的帮助.
编辑:
模型值实际上是form.$valid,它有自己的Form控制器(我认为),这就是我使用action函数尝试将值传递给父控制器的原因.所以$scope.$watch此刻不起作用,只有在它被初始化时.
Tho*_*988 27
ngChange仅用于输入,如果你想听模型这样做
$scope.$watch('repair.test', function(newvalue,oldvalue) {
});
Run Code Online (Sandbox Code Playgroud)
所述ngChange当输入值的变化导致要致力于模型的新值表达式仅被评估.
它不会被评估:
$parsers转换管道返回的值未更改尝试使用$ scope创建一个观察者.$ watch -$watch(watchExpression, listener, [objectEquality]);
例
$scope.$watch('repair.test', function(newValue, oldValue) {
// ...
});
Run Code Online (Sandbox Code Playgroud)