我是angularjs的新手。我试图在plnkr中运行$ watch的示例代码,但是,我无法触发watch表达式。我需要触发摘要周期吗?

<!DOCTYPE html>
<html>
  <head>
    <script data-require="[email protected]" data-semver="1.3.8" src="https://code.angularjs.org/1.3.8/angular.js"></script>
    <link rel="stylesheet" href="style.css" />
    <script src="script.js"></script>
  </head>
  <body ng-app="funny" ng-controller="funController">
    <input value="{{random.text}}" />
    <div>{{number}}</div>
  </body>
</html>
<script type="text/javascript>
    var fun = angular.module("funny",[]);
    fun.controller("funController", function($scope) {
      $scope.random = { text : "les c!" };
      $scope.number = Math.random();

      $scope.$watch("random.text", function() {
        $scope.number = Math.random();
      });
    });
</script>

这是一个Plunker链接https://plnkr.co/edit/nfkQ6p4nc6MRwThay8Hd?p=preview

最佳答案

解决方法如下:

https://plnkr.co/edit/WpIS2YffE5NabayejJsZ?p=preview

您应该使用 ng-model ,因为value-不是 Angular Directive(指令)。使用ng-model时,angular自动运行digest

<input ng-model="random.text" />

顺便说一句,在 Controller 中使用scope.watch是一个坏习惯。最好在输入和调用 Controller 功能上设置ng-change

所以这是一个更清洁的解决方案https://plnkr.co/edit/iVBWdYhvnfJszNIPteuh?p=preview

关于javascript - AngularJS | Plnkr |观看表情,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39327113/

10-09 20:35