注意不要使用ControllerAs语法捕获this.value

时间:2017-01-16 21:18:54

标签: angularjs

手表未对ng-model="billing.inputBoxFilter"进行更改。有任何想法吗?没有错误。只是没有来自console.log

的输出
          <ng-include
            src="'billing/billing.html'"
            ng-controller="BillingCtrl as billing"></ng-include>
      <md-input-container flex="50">
        <label>Name</label>
        <input ng-model="billing.inputBoxFilter" type="text"
          ng-disabled="selectedItem">
        <md-icon md-svg-icon="magnify"></md-icon></md-icon>
      </md-input-container>
angular.module('patientBilling')
  .controller('BillingCtrl', [

      this.inputBoxFilter;
      $scope.$watch(angular.bind(this, function() {
        return this.inputBoxFilter;
        }, function(newValue, oldValue) {
          console.log(newValue);
      }));

3 个答案:

答案 0 :(得分:1)

只需使用this的参考号。

  var vm = this;

  $scope.$watch(function() {
    return vm.inputBoxFilter
  }, function(newValue, oldValue) {
    console.log(newValue);
  });

DEMO

答案 1 :(得分:1)

当定义了controllerAs标识符时,Controller实例作为范围的属性可用,这就是使用controllerAs语法的原因。

$scope.$watch('billing.inputBoxFilter', function(newValue, oldValue) { ... });

答案 2 :(得分:0)

问题是语法问题(而不是错误),其中回调参数不正确。关于ControllerAs语法如何破坏可读性并导致过多代码的一个很好的例子。

  $scope.$watch(angular.bind(this, function() {
    return vm.inputBoxFilter;
    }), function(newValue, oldValue) {
      console.log(newValue);
    });