Javascript AngularJS排序DOM元素

Javascript AngularJS排序DOM元素,javascript,angularjs,Javascript,Angularjs,我有一个常用的用例。我有一个CMS,它通过一个web服务提供部分数据,补充这些数据以完成整个过程。jQuery最有效的方法是将所有部分数据转储到保留区,当web服务响应时,填充其余数据并将其移动到适当的位置 我知道这类似于,但我认为这是一个不同的用例,我没有看到答案 基本上,DOM的90%是用什么角度加载的,可以考虑静态数据。然而,在web服务响应之前,我们不知道东西属于哪里。在服务响应后,我们如何“排序”DOM?LIs的数量是有限的——web服务是这些LIs的一种状态,而不是用于迭代和创建它们

我有一个常用的用例。我有一个CMS,它通过一个web服务提供部分数据,补充这些数据以完成整个过程。jQuery最有效的方法是将所有部分数据转储到保留区,当web服务响应时,填充其余数据并将其移动到适当的位置

我知道这类似于,但我认为这是一个不同的用例,我没有看到答案

基本上,DOM的90%是用什么角度加载的,可以考虑静态数据。然而,在web服务响应之前,我们不知道东西属于哪里。在服务响应后,我们如何“排序”DOM?LIs的数量是有限的——web服务是这些LIs的一种状态,而不是用于迭代和创建它们的工具

我的DOM看起来像:

<ul id="good">
</ul>

<ul id="bad">
</ul>

<ul id="temporary">
    <li id="bob"><p>Lorem ipsum dolar sit amet</p> DOB {{bob.dob}}</li>
    <li id="susan"><div>Roses are red violets are blue</div>Name: Susan, DOB: {{susan.dob}}</li>
    <li id="paul">Name: Paul, DOB: {{paul.dob}}</li>
<ul>
{
   "good": [{
      "id": "paul",
      "dob": "01/01/2014"
   }, {
      "id": "susan",
      "dob": "05/01/2014"
  }],
  "bad": [{
     "id": "bob",
     "dob": "12/25/2013"
  }]
}
因此,那些在“好”类别中的需要移动到“好”UL,而那些在“坏”类别中的需要移动到“坏”UL。在jQuery中,这只是:

$("#bob").appendTo("#bad");
DOM比上面的要复杂得多,所以希望通过某个标识符获取一个div,并将整个内容移动到另一个容器中

我们目前的做法是在每个UL中都有每个LI,并使用ng if根据类别显示/隐藏它,但这似乎是一种鸟枪式的方法,更优雅的方式将是有用的


这可能吗?我们不能只更新模型,因为模型没有包含足够的信息来创建视图。

抱歉,听起来您的设计问题不好。模型就是模型,周期。你正在混合各种范例并在其中绊倒。您需要让服务器向您发送数据,而不是html。你需要有静态的模板,而不是黑客。您需要让angular处理模型和渲染,而不是试图将jQuery硬塞进其中。移动dom元素是使用ng repeat应该做的事情。angular的整个理念是永远不必执行您试图完成的确切类型的任务。

这很可能是由于
ng repeat
的魔力,但我对您的问题的关注在于:“我们不能只更新模型,因为模型没有足够的信息来创建视图。”。为什么?数据确实存在以呈现视图,为什么它不能存在于模型中?我的意思是可能有一个或两个动态片段,但有50个静态片段。因此,我们需要将LI视为包含所有静态数据(每个LI的静态数据不同)并将其移动到其他地方,然后填充。反之亦然。顺序不重要。我将更新DOM—我使它在LI之间看起来太相似了,但事实并非如此。$scope.bad=[{id:“bob”},{id:“susan”}]使用ng repeat=“people in bad”将不起作用,因为LI本身需要移动。如果我们重复ng,当它只在一个地方存在时,我们会在多个地方编写一个巨大的DOM,我们希望避免这种情况,因为LIs被发送到浏览器,而不是通过客户端渲染。如果我们可以填充它们并将它们排序到一个可指定的容器中,同时保留内部DOM,那么我们就成功了。抱歉,听起来您的设计问题很糟糕。模型就是模型,周期。你正在混合各种范例并在其中绊倒。您需要让服务器向您发送数据,而不是html。你需要有静态的模板,而不是黑客。您需要让angular处理模型和渲染,而不是试图将jQuery硬塞进其中。移动dom元素是使用ng repeat应该做的事情。angular的全部思想是永远不必执行您试图完成的确切类型的任务。您所谈论的是使用dom操作作为管理模型的一种手段。你不能用角度来做这件事,而且你无论如何也不应该这样做。