Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Mootools.addEvent can';你不能进去吗?_Javascript_Html_Css_Angularjs_Mootools - Fatal编程技术网

Javascript Mootools.addEvent can';你不能进去吗?

Javascript Mootools.addEvent can';你不能进去吗?,javascript,html,css,angularjs,mootools,Javascript,Html,Css,Angularjs,Mootools,因此,我尝试使用mootools创建一个拖放车,如下所示:。我可以让那里的代码正常工作,但是当我试图编辑他们的html使其看起来像html beloe时,它就停止工作了。css仍然如人们所期望的那样适用,ng repeat之外的div工作良好。但是,我非常确定mootools javascript中的.addEvent无法在ng repeat中“找到”该.item,因此我无法获取ng repeat中的任何.item 有什么想法吗 更新: 好的,问题似乎涉及javascript中的domready

因此,我尝试使用mootools创建一个拖放车,如下所示:。我可以让那里的代码正常工作,但是当我试图编辑他们的html使其看起来像html beloe时,它就停止工作了。css仍然如人们所期望的那样适用,ng repeat之外的div工作良好。但是,我非常确定mootools javascript中的.addEvent无法在ng repeat中“找到”该.item,因此我无法获取ng repeat中的任何.item

有什么想法吗

更新: 好的,问题似乎涉及javascript中的domready事件。发射时angularjs还没上膛。我尝试了加载事件,但这也会在angularjs加载之前触发。还有其他关于活动的想法吗?我现在正在使用mousedown,但这意味着您必须先单击其中一个图像,然后才能开始拖动它们,这不是最佳选择。此外,mousedown事件似乎有时会导致购物车中出现奇怪的重复项,因此我需要找到更好的方法

<div id="items">
    <div class="item">
        <p>test</p>
    </div>
  <div ng-repeat="post in posts">

    <div class="item">
        <img class="picImage" src="/static/imgs/{{post.picture}}" alt="Smiley face" height="128" width="128">
        <p>Shirt 1</p>
    </div>
  </div>
</div>

试验

衬衫1


您是否尝试挂接$viewContentLoaded事件

他们在这里谈论:

取决于您如何连接拖曳电缆。问题是,在ng repeat通过应用程序这一部分的
$scope.$apply
etc生命周期进行渲染之前,这些元素不会出现

// this code is wrong. 
$$('.item').addEvent('mousedown', function(event){
    event.stop();
... 
});
此外,如果集合发生更改,mootools将不知道如何添加新的单击处理程序

您不希望等待ng更改内容并重新应用mootools事件,这不是一个好主意

您可以使用:将事件绑定到集合元素,添加
$scope.onMouseDown
并将逻辑移动到那里,让Angle在内部处理它:

<div ng-repeat="post in posts">
    <div class="item" ng-mousedown="onMouseDown($event, post, $index)">
        <img class="picImage" src="/static/imgs/{{post.picture}}" alt="Smiley face" height="128" width="128">
        <p>Shirt 1</p>
    </div>
</div>
。。。也可以使用事件委派和绑定,如下所示:

$('items').addEvent('mousedown:relay(.items)', function(event){ 

    // ... do normal logic but no access to ng model here. can get dirty
});
事件委派(如上通过中继)可以正常工作,只要angular不会因为渲染应用程序的该部分而决定重新渲染
div#items
。如果它这样做,它将销毁保存的事件。这还意味着您需要能够首先看到这个元素,然后通过mootools绑定到它

为了安全起见,您可能希望将事件绑定到您的ng app div,并将其委托给此事件:

document.getElement('[ng-app]').addEvent('mousedown:relay(#items div.items)', fn);
document.getElement('[ng-app]').addEvent('mousedown:relay(#items div.items)', fn);