当前位置: 首页 > 面试题库 >

$ watch与ng-change,ng-checked等的角度触发变化

左丘成仁
2023-03-14
问题内容

当前,我们可以通过几种方式监视数据更改。我们可以使用触发模型更改,$watch并且可以向元素添加指令并对其绑定一些操作。

在许多情况下,这有点令人困惑,所以我很好奇,这是每个变体的优缺点,何时应该使用$watch绑定,何时使用诸如ng-change?的指令?


问题答案:

两者$watchngChange具有完全不同的用法:

假设您有一个在范围内定义的模型:

$scope.myModel = [
    {
        "foo":"bar"
    }
];

现在,如果您想在发生任何更改时执行某些操作,则myModel可以使用$watch

$scope.$watch("myModel", function(newValue, oldValue){
    // do something
});

ngChange 是一个指令,当用户更改输入时将评估给定的表达式:

<select ng-model="selectedOption" ng-options="option for option in options" 
ng-change="myModel=selectedOption"></select>

简而言之,您通常会绑定ngChange到一些HTML元素。而$watch对于模型。



 类似资料:
  • 问题内容: 输入如下: 当我手动键入并更改输入时,将执行。但是,如果我以编程方式通过其他功能更改了repair.test值,则不会触发ng- change的操作。我已经阅读了角度教程,这可能是预期的行为。 https://docs.angularjs.org/api/ng/directive/ng更改 “当值更改来自模型时,不评估表达式。” <-我也需要这个。模型以任何方式更改时,如何在控制器中触

  • 问题内容: 我正在使用ng-pattern来验证某些表单字段,并且正在使用ng-change来监视和处理任何更改,但是ng-change(或$ scope。$ watch)仅在form元素位于$有效状态!我对angular还是陌生的,所以我不知道如何解决这个问题,尽管我怀疑应该采用新的指令。 在ng-pattern仍然像以前一样设置表单元素状态的情况下,如何在$ invalid和$ valid表单

  • 问题内容: 我有一个选择标签,如下所示: 并且我为此使用了jQueryUI控件(组合框),则从jQuery触发的事件“更改”不会触发doSomething()。 您知道如何从外部角度触发ng-change吗? 问题答案: 糟糕-这是很糟糕的做法-但您可以使用目标控制器中驻留的元素并从中获取。 例: Javascript: 现在,您的变量可以访问控制器上定义的所有方法。

  • 问题内容: http://plnkr.co/edit/RP9SpO1qGjn5Ua6pZJ3D?p=preview js 和html 注意,根据半径范围结构检查了“ 2 Mile”无线电输入。为什么ng-change不触发功能? 如果我添加ng-model,则该函数会触发,但是ng-checked无法正常工作。 问题答案: 这是因为您没有使用: plnkr 更新: 很抱歉,我没有注意到您要检查默认

  • 问题内容: 我有一个在更改textarea的值时调用的函数。它很好用,除非按下空格键,然后什么也没叫。有没有办法激活它?从技术上讲,内容在变化,我希望无论如何都要调用该函数。 我在代码上摆弄小提琴。您可以看到按下空格键时,数组不会推送新的元素(也请按Enter键),但是其他非空白键都可以。 小提琴示例:http : //jsfiddle.net/UJWLN/4/ 问题答案: 您可以在输入中使用指令

  • 问题内容: 什么时候应该使用角度函数,什么时候应该使用angularjs指令?对我来说,他们都可以做同样的事情。 两者之间是否有差异或使用方式? 问题答案: 显然,它们并不相同。一种仅在控制器中使用;另一种仅用于控制器。另一个是对输入元素的指令。 但是即使在它们的应用中,它们也有所不同。 使用监视的表达式时,将在每个摘要循环上对其进行评估,如果有更改,则将调用处理程序。 使用,响应事件,显式调用处