中止拖放后,Angular-Elements不会刷新

时间:2017-01-24 10:05:09

标签: angularjs drag-and-drop ngdraggable

我有以下angular-List(减少内容以使其更易读):

 <div ng-repeat="element in bigBlock.Elements track by $index"
                         class="singleBlockElement"

                         ng-drop="dragSource=='Block'"
                         ng-drop-success="To($index, $data, bigBlock)">
                        <div class="bbRange">&nbsp;</div>
                        <i class="fa {{GetImage(element)}}" />
                        <div ng-drag="element.ElementType!=='placeholder'"
                             ng-drag-data="element"
                             ng-drag-start="Start()"
                             ng-drag-success="From(element,bigBlock, $index, bigBlock.$index)"
                             ng-drag-stop="Stop(element, bigBlock, $index, bigBlock.$index)"
                             class="cutOff">
                            {{element.Title}}
                        </div>
                        <div class="edit ng-show="GetLinkText(element, true)">
                            <span class="isvisible">
                                <i title="{{element.Present?'Präsentieren':'Nicht präsentieren'}}" class="fa fa-{{element.Present?'eye':'eye-slash'}}"></i>
                            </span>
                            <a href="#" ng-click="Edits.Element(element, true)">{{GetLinkText(element,true)}}</a>
                        </div>
                    </div>

这是它的样子: enter image description here 这是拖延: enter image description here 这就是我只是不像下面描述的那样掉落的样子: enter image description here

我现在可以(成功地)拖拽删除该块中的两个元素(“欢迎”和“走开”),改变这两个元素的顺序。

但如果我中止了拖放。例如拖动“欢迎”而不是向下移动它或将其移动到我无法放下的区域(块外)文本“欢迎”消失。

没有错误。下降只是没有(正如预期的那样),但Angular似乎无法重新显示该元素的文本。 ({{element.Title}})

我尝试使用$ apply()强制刷新,但这并没有改变一件事(也没有创建错误)。

但是,如果我在页面上执行任何操作,例如单击编辑按钮或导致事件的任何其他内容,则会再次正确显示日期。

所以对我来说这看起来像是一个刷新问题。

我正在使用ngDraggable(https://github.com/fatlinesofcode/ngDraggable

(更新:分析Chrome浏览器控制台中的页面来源文本似乎仍然存在,甚至“应该”可见(显示:阻止),因此这可能更像是一个浏览器问题(chrome)而不是角问题)

1 个答案:

答案 0 :(得分:0)

这似乎是纯粹的Browser / CSS-Issue而不是Angular-Issue。我通过强制浏览器刷新父容器来解决这个问题:

$('.mm-Right')[0].style.display = 'none';
$('.mm-Right')[0].offsetHeight; 
$('.mm-Right')[0].style.display = 'block';

我的结构是

<div class='mm-Right'>
<div class='singleBlockElement>[..]</div>
<div class='singleBlockElement>[..]</div>
<div class='singleBlockElement>[..]</div>
</div>

确实解决了这个问题,但看起来像是在欺骗我。我宁愿不出现这个错误,而不是隐藏症状。所以我很高兴接受任何更好的答案来解决这个问题。