javascript - AngularJS - 如何在自定义指令中更改 ngModel 的值?

标签 javascript angularjs angularjs-directive angularjs-model

让我们看看我的指令:

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 的值呢?

最佳答案

有不同的方法:

  1. $setViewValue() 更新 View 和模型。大多数情况下就足够了。
  2. 如果你想断开 View 与模型的连接(例如,模型是一个数字,但 View 是一个带有千位分隔符的字符串),那么你可以直接访问 $viewValue$modelValue
  3. 如果您还想覆盖 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
        }
 ...

链接:

关于javascript - AngularJS - 如何在自定义指令中更改 ngModel 的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22639485/

相关文章:

javascript - 如何在 jQuery 中获取浏览器滚动位置?

javascript - 从 html.append 附加的 html 下拉列表中获取返回值

html - 使用 Angularjs 每表行重复表单

angularjs - 防止在 Angular UI 树中拖动

javascript - Angular 1.0.1 与 1.3.0 的指令

javascript - Angular Directive(指令)不会出现在 View 中,但出现在控制台中

php - 使用 onclick 函数连续将 JavaScript 值输入到密码输入中?

javascript - 无法选择我用 jQuery 加载的 ID

javascript - AngularJS:点击目标在元素内部吗?没有 jQuery

AngularJS 翻译动态字符串