从指令更改ng-model值

维巴哈夫·劳特

基本上,我正在尝试为日期选择器编写指令。在此指令中,我使用ng-model的变量将更改后的值反映给父控制器。但是我有一些问题。我不知道如何设置ng-model变量的初始值。其次,我不了解如何更新ng-model变量并对其进行验证。

我已经尝试过这样的事情。

angular.module("mainModule.directives").directive('datePicker', function () {
    var directive = {
        restrict: 'E',
        replace : false,
        template : '<input ng-model="date" type="text"/>',
        require : 'ngModel',
        scope : {},
        link : function($scope, elem, attr, ngModelCtr) {
            $scope.date = ngModelCtr.$viewValue;

            function fromUser(text) {
                $scope.date = ngModelCtr.$viewValue;
            }

            function toUser(text) {
                ngModelCtr.$setViewValue($scope.date);
            }

            ngModelCtr.$parsers.push(fromUser);
            ngModelCtr.$formatters.push(toUser);
        }
    };

    return  directive;
});
<date-picker ng-model="modelDate"></date-picker>
杰森·古玛(Jason Goemaat)

解析器和格式化程序使用现有值,并且应该返回我认为经过解析或格式化的结果。您可以设置ngModelController.$render一个将在值更改时调用的函数,然后ngModelController.$setViewValue在需要时用于更新值。这是一个小提琴,显示了使用momentjs仅在输入有效日期后才更新基础模型(fiddle):

link : function(scope, elem, attr, ctrl) {
    ctrl.$render = function() {
        scope.date = moment(ctrl.$viewValue).format("YYYY-MM-DD");
    };
    scope.$watch('date', function(newValue, oldValue) {
        // only update if it is a valid date string
        var m = moment(newValue);
        if (m.isValid()) {
            ctrl.$setViewValue(m);
        }
    });
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从指令更改ng-model值

来自分类Dev

检测ng-model更改为指令

来自分类Dev

如何在自定义Angular指令中更改ng-model范围值?

来自分类Dev

Angular指令更改父模型,例如ng-model

来自分类Dev

从ng-model更改子代的值

来自分类Dev

如何通过ng-model指令拦截值绑定

来自分类Dev

将ng-model值传递给angular指令

来自分类Dev

如何在指令中获取ng-model值

来自分类Dev

如何通过ng-model指令拦截值绑定

来自分类Dev

将值从指令传递回ng-model

来自分类Dev

如何在指令中访问ng-model值?

来自分类Dev

将指令中的值传递给 ng-model。-angularjs

来自分类Dev

从指令更改ngModel值

来自分类Dev

从指令更改范围值

来自分类Dev

以编程方式更改ng-model时未获得ng-model的更新值

来自分类Dev

更改指令中的范围值

来自分类Dev

将ng-model和占位符值传递给指令

来自分类Dev

触发自定义验证指令后,AngularJS ng-model值丢失

来自分类Dev

将md-dialog中的值绑定到指令中的ng-model

来自分类Dev

将ng-model和占位符值传递给指令

来自分类Dev

如何修改angularjs指令后面指定的模型(ng-model值)?

来自分类Dev

md-checkbox 不会由指令的 link() 函数内的 ng-model 值设置

来自分类Dev

在嵌套指令中传递ng-model

来自分类Dev

Ng标签输入指令未清除值

来自分类Dev

为什么ng-keypress不会更改ng-model值

来自分类Dev

在js代码中更改相应的ng-model值后,$ dirty不会更改

来自分类Dev

如何在更改单选值时更改文本框的 ng-model?

来自分类Dev

AngularJS指令更改ng模型

来自分类Dev

在Angular指令中更改css属性值