假设我有一些带有以下角度关联的输入标记:
<input type="text" data-ng-model-options="{ updateOn: 'submit' }" data-ng-model='value.name'>
当提交带有此标记的表单时,它将更新值的名称。
当调用控制器定义的函数而不是事件时,有没有办法触发updateOn
?或者API是否只能处理浏览器事件?
例如:
如果我有这样的事情:
angular.module('someModule')
.controller('someCtrl', ["$scope", Callback])
function Callback($scope){
$scope.updateValue = updateValue
function updateValue(){
console.log('will now update value')
}
}
如果调用updateValue
函数,有没有办法只更新模型?
这不会奏效,但是这样的事情?:
<input type="text" data-ng-model-options="{ updateOn: 'updateValue' }" data-ng-model='value.name'>
答案 0 :(得分:1)
您无法将自定义函数传递到updateOn
指令的ng-model-options
属性中,但是,您可以控制何时将某些内容推送到模型,如下所示:
angular.module('someModule', [])
.controller('someCtrl', ["$scope", Callback])
function Callback($scope){
$scope.updateValue = updateValue
$scope.value = {
name: ""
}
function updateValue(form){
console.log('will now update value')
// form.[prop] matches name="prop" attribute on form input
form.name.$commitViewValue();
}
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.0/angular.min.js"></script>
<div data-ng-app="someModule" data-ng-controller="someCtrl">
<form name="myForm">
<input type="text" name="name"
data-ng-model-options="{ updateOn: 'submit' }" data-ng-model='value.name'>
{{value.name}}<br/>
<button data-ng-click="updateValue(myForm)">Update Name</button>
</form>
</div>
&#13;