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

如何在事件上对jquery进行指令更新ng-model?

姚正真
2023-03-14
问题内容

我正在为jQuery日期选择器插件创建AngularJS指令,当日期选择器日期更改时,该插件应更新ng-model。

这是到目前为止的代码:

angular.module('bootstrap-timepicker', []).directive('timepicker', [
  function() {
    var link;
    link = function(scope, element, attr, ngModel) {
      element.datetimepicker();

      element.on('dp.change', function(event) {
        // update ngModel ?
      });
    };

    return {
      restrict: 'A',
      link: link,
      require: 'ngModel'
    };
  }
]);

考虑到在调用事件时范围,元素,属性,ngModel不可用,如何在“ dp.change”事件中更新ngModel?

谢谢!


问题答案:

可以肯定的是,已添加到angular的任何插件都不会更新ng-modelangular范围的,我们需要在它的jquery
change事件上手动进行操作。在有角度的jquery中,插件应始终使用指令绑定到DOM,因为指令确实提供了对DOM的良好控制。

正如您在问题中所问的那样ngModel,,elementscope对象在dp.change事件内不可用datetimepicker,我不认为这在指令链接函数内是可能的,您一定做了其他事情,或者您错过了问题的解释。

为了更新日期选择器的ng-model,您需要在dp.change事件中添加以下代码

element.on('dp.change', function(event) {
  //need to run digest cycle for applying bindings
  scope.$apply(function() {
    ngModel.$setViewValue(event.date);
  });
});

在上面的代码中,我们从事件对象中检索了更新的日期,然后将其分配给的$viewValue视图中的实际字符串值ng-model,然后为了将其更新到ng-model使用该变量的每个其他位置,我们需要使用$apply()on指令手动运行摘要循环链接功能范围。运行摘要循环的原因是,我们需要将该值推送到ng-model变量$modalValue控件绑定到模型中的值 )中。



 类似资料:
  • 我正在尝试执行一个更新,内容如下: 如果当前时间晚于拍卖结束时间(即非活动),则将表的列设置为。否则,设置为“1”。 我一直在犯这个错误。。 javax。servlet。ServletException:java。sql。SQLException:结果集关闭后不允许操作 我怎么去修理这样的东西?

  • 问题内容: 给出: 给出: 是否有准备使用的库/代码来完成它? 问题答案: 您将无法使用JSON.stringify序列化事件对象,因为事件对象包含对DOM节点的引用,并且DOM在各处都有循环引用(例如,子/父关系)。JSON默认情况下无法处理这些,因此您有点不走运。

  • 我是Gajarthan,我是jQuery的新手。如果用户未确认,我会尝试防止更改复选框。但当我第一次点击时它就不起作用了。点击第二次后,它正常工作。 这是我功能的总结 当我单击切换按钮时,它需要显示一个确认警报“你确定要继续吗?”如果我点击“是”。如果toggle inactive(非活动),则需要更改Active(活动)。如果toggle active,则需要更改inactive。如果我点击“否

  • 问题内容: 我有一个类似ng-repeat =“(数据中的(键,值))的代码。在控制器中: 和ng-repeat指令为 输出按以下顺序排序 如何摆脱这种排序(奇怪),因为我想在代码中使用键。。我检查了google group,但使用两个存储键值的数组有一个小提琴。http://jsfiddle.net/Saulzar/puhML/3/b。不想采用这种方法。 问题答案: 这是JavaScript而不

  • 问题内容: 问题: 我希望能够对 Angular 2中的指令 进行 单元测试,以确保它可以正确编译。 在Angular 1中,之后可以使用service和call 。我特别希望能够在单元测试中做到这一点,这样我就可以测试Angular最终在编译后的代码中运行了。 限制条件: 使用JAVASCRIPT的Angular 2 。所有有些相关的资源似乎都需要TS。也许这些资源确实可以解决问题,而我对TS的

  • 与Java(以字符串形式)相比,您可以执行类似于。 那么,为了将多行代码写入一个常规文件,您将如何在Python中实现这一点呢?