gpt4 book ai didi

angularjs - 如何在没有表单和指令的情况下从Controller内部访问$ ngModelController

转载 作者:行者123 更新时间:2023-12-04 04:25:59 25 4
gpt4 key购买 nike

也许这是一个菜鸟的错误,但是我似乎无法访问$scope.model$ngModelController,因此我可以从中获取$viewValue

我有没有形式的输入(即使用ui-mask指令):

<input type="text" ng-model="inicio" name="inicio" ui-mask="99/99/9999">

// inside my controller
$scope.inicio = dateFilter((new Date).getTime(), 'dd/MM/yyyy');

ui-mask将$ modelValue设置为与$ viewValue不同的值,从而很难将格式化的数据发送到服务器。当 $scope.inicio模型更改时,该值是不带斜杠的日期,例如 01012014。因此,我需要能够获取该输入的 Controller ,而不必将其包装为表单,并且必须使用 $scope.myForm.inicio.$viewValue。一定有可能...

我知道我可以做的事情,但看起来有些怪异,必须有一种更简单的方法:
  • 将元素放入表单中,并通过$scope.myForm.input.$viewValue对其进行访问
  • 使用jQuery获取元素数据$('input[name="inicio"]').data('$ngModelController');
  • 使用angular.element('input[name="inicio"]').controller('ngModel');获取元素
  • 创建指令,将其放入输入中,并使用它来更新我的范围模型

  • app.directive('viewValue', function(){
    return {
    priority: 10,
    require: 'ngModel',
    link: function(scope, element, attrs, controller){
    scope.$watch(attrs.viewValue, function(newValue, oldValue){
    if (newValue !== oldValue){
    scope[attrs.viewValue] = controller.$viewValue;
    }
    });
    }
    }
    });

    <input type="text" ui-mask="99/99/9999" ng-model="inicio" view-value="inicio">

    最佳答案

    我喜欢指令替代。本质上,ui-mask指令没有执行您想要的操作,因此您最好编写自己的指令。

    您不必将inicio传递给view-value指令。而是将自己的解析器添加到ngModelCtrl.$parsers。这是一个示例:https://stackoverflow.com/a/15556249/215945

    关于angularjs - 如何在没有表单和指令的情况下从Controller内部访问$ ngModelController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17116730/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com