让我们看看我的指令:
angular.module('main').directive('datepicker', [
function() {
return {
require: '?ngModel',
link: function(scope, element, attributes, ngModel) {
ngModel.$modelValue = 'abc'; // this does not work
// how do I change the value of the model?
那么,我该如何更改 ng-model 的值呢?
最佳答案
有不同的方法:
$setViewValue()
更新 View 和模型。大多数情况下就足够了。- 如果你想断开 View 与模型的连接(例如,模型是一个数字,但 View 是一个带有千位分隔符的字符串),那么你可以直接访问
$viewValue
和$modelValue
- 如果您还想覆盖
ng-model
的内容(例如,指令更改小数位数,同时更新模型),请注入(inject)ngModel: '='
在作用域上设置scope.ngModel
例如
return {
restrict: 'A',
require: 'ngModel',
scope: {
ngModel: '='
},
link: function (scope, element, attrs, ngModelCtrl) {
function updateView(value) {
ngModelCtrl.$viewValue = value;
ngModelCtrl.$render();
}
function updateModel(value) {
ngModelCtrl.$modelValue = value;
scope.ngModel = value; // overwrites ngModel value
}
...
链接:
- 讨论第一个选项here
- NgModelController官方文档
关于javascript - AngularJS - 如何在自定义指令中更改 ngModel 的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22639485/