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

带有指令的AngularJS动态表单字段ID不起作用

章晗日
2023-03-14
问题内容

尝试将指令添加到具有动态ID的输入时,链接方法未正确绑定到该对象。给定以下jsfiddle或html

<div ng-app="myApp" ng-controller="MyCtrl">
  <p>Date: <input type="text" id="datepicker-{{id}}" datepicker></p>    
</div>

和js:

var module = angular.module('myApp', []);

module.directive('datepicker', function() {
  var linker = function(scope, element, attrs) {
    element.datepicker();
  }

  return {
    restrict: 'A',
    link: linker
  }
});

function MyCtrl($scope) {
  $scope.id = 7
}

我在控制台调试器上看到的是,当链接被调用时,其ID实际上显示为“ datepicker-{{{id}}””而不是“ datepicker-7”。

有办法强迫这种情况发生吗?实施此方法的更好方法?

更新 :应该已经澄清。单击日期选择器会显示出来,但是单击日期不起作用。我收到错误:“此日期选择器未捕获的缺少实例数据”


问题答案:

我相信您需要transclude:true在指令返回对象中,该对象会告诉angular对诸如{{ }}绑定之类的标记进行预处理。

您还需要将调用包装到datepicker()中,$timeout以将尝试延迟到下一个角度循环运行之前,以确保在DOM中设置了已转换的ID。

这在jsfiddle中为我工作

var module = angular.module('myApp', []);

module.directive('datepicker', function($timeout) {
    var linker = function(scope, element, attrs) {
        $timeout( function(){
            element.datepicker();
        });
    }

    return {
        restrict: 'A',
        link: linker,
        transclude: true
    }
});

function MyCtrl($scope) {
    $scope.id = 7
}


 类似资料:
  • 问题内容: 用户故事:当新用户单击“新用户”复选框并接受“条款和条件”单选按钮时,应启用“注册”按钮。 我在angularJS中的代码无法正常工作。“注册”按钮保持禁用状态。想知道出了什么问题? 问题答案: 该表达式在当前范围内进行评估。因此,您只需要以下内容,而无需使用进行任何附加插值: 请注意,我添加了一个,因为如果用户 未 接受TnC,您可能希望禁用该按钮。 工作演示:http : //pl

  • 本文向大家介绍AngularJS动态菜单操作指令,包括了AngularJS动态菜单操作指令的使用技巧和注意事项,需要的朋友参考一下 前言         在我们创建一个angularJS应用的时候,菜单往往往是不可或缺的元素之一。也许在我们静态菜单的时候不会发现在指令中操作菜单收缩、折叠展开没有任何问题,因为我们在操作之前,页面元素渲染已经完成,所以在指令里面通过element查找目标元素可以成功

  • 问题内容: 确实为此感到挣扎-尝试了我能想到的所有方法。希望有人可以提供帮助。 我有一条指令可以为我创建自定义控件的轮廓。定制控件的中心部分将由另一个动态生成的指令表示,该指令基于外部指令上的作用域变量的值。作用域变量包含内部指令的名称。我这样做是因为我的页面将包含多个动态生成的元素,这些元素均具有相同的布局,但内部内容不同。 即我的外部指令的示例: 设置为另一个指令的名称-在这种情况下。因此,我

  • 问题内容: 有没有一种方法可以在 不使用指令的情况下 以角度验证字段?例如:我想在输入字段上进行以下验证。 如果字段为空,则应显示“字段必须包含值”消息。 如果字段包含字母数字字符,则应显示“字段只能包含数字”。 偶数-给用户的消息“值必须是偶数”。 我想在对JavaScript函数的调用中进行以下验证。 我四处搜寻,发现有一种使用ng-valid和$ error的方法,但是我没有设法使其工作。

  • 问题内容: 我正在尝试验证从后端端点给我的一些表单字段… 因此基本上,元素是在内动态创建的。因此,属性也被动态添加,如,等… 但是,由于该属性是动态添加的,因此当我尝试验证它时,例如: 它不返回任何内容,因为在这一点上,它不知道是什么。 我创建了一个jsFiddle来演示该问题:http : //jsfiddle.net/peduarte/HB7LU/1889/ 任何帮助或建议将不胜感激! FAN

  • 问题内容: 我正在尝试克服Rails中动态表单字段的障碍- 这似乎是框架无法很好地处理的。我也在我的项目中使用jQuery。我已经安装了jRails,但是我更愿意在可能的情况下毫不干扰地编写AJAX代码。 我的表单相当复杂,嵌套的两个或三个级别并不罕见。我遇到的问题是生成正确的表单ID,因为它们是如此依赖于表单构建器上下文。我需要能够动态添加新字段或删除关系中的现有记录,而我完全不知所措。 到目前