当前位置: 首页 > 面试题库 >

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

巫马淳
2023-03-14
问题内容

也许这是一个新手的错误,但我似乎无法访问$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。因此,我需要能够获取该输入的控制器,而不必将其包装为表单,而必须使用$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指令没有执行您想要的操作,因此您最好编写自己的指令。

您不必传递inicioview-value指令。而是将您自己的解析器添加到中ngModelCtrl.$parsers



 类似资料:
  • 我正在测试一个使用OAuth机制来授权和访问API的Web应用程序。OAuth使用RS256算法对令牌进行签名。我注意到,当我传递JWT令牌时,我仍然能够访问API,该令牌具有空“Header”值,并且没有JWT令牌中的“验证签名”部分。 示例:原始JWT令牌-

  • 问题内容: 我试图将配置(例如URLs / etc)放入资源文件夹中,以供实用程序类使用。但是,我不想从任何地方的活动中传递上下文。我希望能够通过路径名(似乎使用assess /是为此用途设计的)来访问资源,而无需使用上下文来访问资源。 在这种特殊情况下,我希望单例实例化时在配置中使用某些东西。除了实例化期间的那一次之外,它不需要任何资源。因此,每次调用getInstance()时都必须传递Con

  • 问题内容: 我可以在没有jQuery的情况下访问数据属性吗? 使用jQuery很容易,但是如果没有jQuery,我在任何地方都看不到该怎么做。 如果我在Google上搜索“没有jQuery”,那么我得到的只是jQuery示例。 可能吗 问题答案: 在这里,我找到了这个例子: 因此,它看起来非常可行。

  • 我有几个AWS EC2实例,并在它们上部署了一个Rancher实例。在Rancher上,我使用Kubernetes部署了一个网站,它使用Istio部署来处理网络,我可以通过登录。我还使用AWS路由53来使URL工作,并使用nginx来实现跨EC2实例的负载平衡。 但是我希望能够只使用登录,因此删除端口。我有办法做到这一点吗? 编辑:我在31380上访问它,因为它被设置为使用NodePort(htt

  • 问题内容: 当然,这个问题可能不是树莓派所特有的。另外,我对Linux还比较陌生。 我想编写一个小库(在node.js中,如果有关系的话),以使用sysfs访问树莓派的GPIO。但是,访问sysfs需要sudo访问,这很明显是有原因的。 Quick2Wire似乎有解决方案,但我想更好地理解它,而不仅仅是盲目使用。他们当然使用了C,但是据我了解,代码并不复杂,即使不那么优雅,也可以仅使用bash即可

  • 我有一个使用webhdfs管理HDFS的工作应用程序。我需要能够在Kerberos安全集群上执行此操作。 问题是,没有库或扩展来协商我的应用程序的票,我只有一个基本的HTTP客户端。 是否可以创建一个Java服务来处理票证交换,并且一旦它获得服务票证,就将其传递给应用程序以在HTTP请求中使用?换句话说,我的应用程序会要求Java服务协商票证,它会将服务票证以字符串或原始字符串的形式返回给我的应用