jquery – 如何从DOM节点转到viewModel对象?

前端之家收集整理的这篇文章主要介绍了jquery – 如何从DOM节点转到viewModel对象?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
调用drop函数时,将其设置为droppable DOM节点(目标),ui.draggable是拖动的DOM节点.

是否存在获取已呈现为特定DOM节点的模型对象的惯用方法

(我正在使用jQuery模板,如果它很重要.可能有多个渲染的单个modelView对象.)

解决方法

可能有更好的方法来做到这一点,但我作弊.这是我的绑定.

编辑

由于下面的例子不完整,我做了一个简单的完整例子,可以在这里找到.

http://pastie.org/1446229

存储当前拖动元素的位置取决于您.在示例中,我使用全局变量作为viewmodel项的代理.您可以为每个draggables和droppables提供对其父模型的引用,并以这种方式访问​​该属性,这取决于您.

希望这可以帮助.

  1. ko.bindingHandlers.drag = {
  2. init: function (element,valueAccessor,allBindingsAccessor,viewmodel) {
  3. var $element = $(element),dragOptions = {
  4. revert: 'invalid',revertDuration: 250,cancel: 'span.handle',cursorAt: { left: 28,bottom: 0 },appendTo : 'body',helper: function () {
  5. return $('<div class="drag-icon"><img src="images/folder-large.png" alt="move" width="32" height="32" /></div>');
  6. },cursor: "pointer",addClasses: false,distance: 10,start : function (e,ui) {
  7. viewmodel.isDragging();
  8. }
  9. };
  10.  
  11. $element.draggable(dragOptions);
  12. },update : function (element,active = valueAccessor();
  13.  
  14. if (!active) {
  15. $element.draggable('disable');
  16. }
  17. else {
  18. $element.draggable('enable');
  19. }
  20. }
  21. };
  22.  
  23. ko.bindingHandlers.drop = {
  24. init: function (element,value = valueAccessor() || {},handler = ko.utils.unwrapObservable(value.onDropComplete),dropOptions = {
  25. greedy: true,tolerance: 'pointer',drop: function (e,ui) {
  26. setTimeout(function () {
  27. handler(viewmodel.dragging());
  28. },0);
  29. }
  30. };
  31. $element.droppable(dropOptions);
  32. }
  33. };

所以我设置了draggable并在start函数中存储了当前拖动的节点viewmodel.isDragging();然后我可以在drop handler中再次访问它.

干杯,

伊恩

猜你在找的jQuery相关文章