尝试通过AngularJS清除输入文本时的范围很奇怪

时间:2014-04-27 19:38:41

标签: html angularjs

我遇到了麻烦,我觉得这是一个相当行人的用例。给出以下表格

<form class="form-inline" role="form">
  <div class="form-group">
    <input type="text" ng-model="customerInput" size="80" class="form-control" placeholder="Type the company name here"/>
    <button class="btn btn-primary" ng-click="addCustomer(customerInput)">Add</button>
  </div>
</form>

我只是想在添加客户后清除输入字段。

  $scope.addCustomer = function(customer) {
    $scope.customers.push({name: customer});
    $scope.customerInput = '';
  }

它没有用,所以我检查了$ scope。 customerInput我在$scope.$$childHead寻找生命的 $scope.addCustomer = function(customer) { $scope.customers.push({name: customer}); $scope.$$childHead.customerInput = ''; } 值。这很有效。

{{1}}

我显然做错了什么。有人可以解释一下吗?

1 个答案:

答案 0 :(得分:0)

由于继承链,Angular $scope经常做你不期望的事情。因此,定义范围内的Plain Old JavaScript var和引用非常有用:

angular.module('myApp').controller(function ($scope) {
    var model = {
        customerInput: ''
    };

    $scope.model = model;
});

然后在您的模板中:<input ng-model="model.customerInput" />。现在,您可以对model函数中的$scope var进行操作,并确信只有您选择的$scope在该模型上运行。当然,随着您越来越熟悉$scope继承模式,您通常希望控制器之间的隐式共享。当然,在这种情况下,您还可以将数据存储在服务中。