我遇到了麻烦,我觉得这是一个相当行人的用例。给出以下表格
<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}}
我显然做错了什么。有人可以解释一下吗?
答案 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
继承模式,您通常希望控制器之间的隐式共享。当然,在这种情况下,您还可以将数据存储在服务中。