我已经查看了这个问题很多小时,并阅读了许多其他问题,看起来完全相同,我已经尝试了他们的每一个解决方案,但似乎没有工作。吴重复不更新阵列变化
我有对象(instructionObj.instructions
)的数组,这些对象得到重复ng-repeat
和他们的模板是一个指令。
<div instruction-directive ng-repeat="i in instructionsObj.instructions"> </div>
然后我允许使用Jquery UI排序来排序项目。
var first, second;
$(".sort").sortable({
axis: "y",
start: function(event, ui) {
first = ui.item.index();
},
stop: function(event, ui) {
second = ui.item.index();
console.log(first + " " + second);
rearrange(first, second);
$scope.$apply();
}
});
我再接入移动物体的开始和结束索引,并相应地重新排列数组:
function rearrange(f, s){
$timeout(function() {
$scope.instructionsObj.instructions.splice(s, 0,
$scope.instructionsObj.instructions.splice(f, 1)[0]);
$scope.$apply();
});
}
所有这一切的伟大工程的大部分时间。我发现失败的一种情况是在重新排列对象时(一列是屏幕上显示的所有对象的当前位置):
a | b | c | d | a
b | c | d | c | b
c | d | b | b | d
d | a | a | a | c
最后一步应该是a,d,c,b。但它变成a,b,d,c。
然而,当我回到我以前的观点,回来了正确的配置显示,一切都很好。正如你可以看到我已经尝试$timeout
和$apply()
和许多其他的东西,但似乎没有工作。
我知道这是一个DOM更新问题,因为我可以记录数组,并且看到它与DOM显示的内容(不正确)不同(正确)。任何帮助,将不胜感激。
更新:
我即使使用<pre ng-bind="instructionsObj.instructions|json</pre>
来显示阵列的精确布局,这是总是正确
。我的心被炸毁了。
你能提供一个plunkr或小提琴或Stackoverflow片段吗? –
只有这么多代码会很困难,这就是为什么我只提供真正影响这个的原因。我提供了和Ionic View链接,以便任何人都可以下载应用程序并对其进行测试。 – theblindprophet
你不必把所有的代码放在plunkr中,只是一个[mcve] – ochi