Javascript Mootools.addEvent can';你不能进去吗?
因此,我尝试使用mootools创建一个拖放车,如下所示:。我可以让那里的代码正常工作,但是当我试图编辑他们的html使其看起来像html beloe时,它就停止工作了。css仍然如人们所期望的那样适用,ng repeat之外的div工作良好。但是,我非常确定mootools javascript中的.addEvent无法在ng repeat中“找到”该.item,因此我无法获取ng repeat中的任何.item 有什么想法吗 更新: 好的,问题似乎涉及javascript中的domready事件。发射时angularjs还没上膛。我尝试了加载事件,但这也会在angularjs加载之前触发。还有其他关于活动的想法吗?我现在正在使用mousedown,但这意味着您必须先单击其中一个图像,然后才能开始拖动它们,这不是最佳选择。此外,mousedown事件似乎有时会导致购物车中出现奇怪的重复项,因此我需要找到更好的方法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
<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);