Angular.js:循环中只包含一个嵌套视图(ui-view)

时间:2015-06-24 07:06:18

标签: javascript html angularjs angular-ui-router

我是Angular.js的新手,并尝试将嵌套控制器实现到列表中。即想象一下消息列表,一旦用户点击其中一个消息,它就会扩展并公开此消息的评论/元信息列表。我希望它在自己的嵌套控制器中。

我相信我的控制器等都设置正确,唯一的问题是当我点击一条消息时,它会显示每条消息下的评论框,而不仅仅是单击的消息。

以下是我的主要观点的HTML:

<ul ng-show="messages.length">
  <li ng-repeat="message_i in messages">
    <a ui-sref=".message({id: message_i.id })">
      {{message_i.title}}
    </a>
    <div ui-view></div>
  </li>
</ul>

一切都很完美,即点击ui-sref链接时,会出现嵌套视图,它只会在每个ui-view中呈现,而不仅仅是点击的消息。< / p>

我尝试在ui-view - div中添加一个条件,以确保它是循环的正确迭代,例如ng-if="message_i.id==id",但这给了我一个错误。我想我无法简单地访问嵌套的.message id参数。

有没有办法用if条件解决这个问题?或者我是以另一种方式做到的?

~EDIT~

为了完整,这是一个小提琴: https://jsfiddle.net/yh1vawj7/10/

1 个答案:

答案 0 :(得分:0)

嗯,经过一些研究后我发现了

  1. 我尝试做的基本上就是Angular UI Bootstrap's Accordion
  2. 的行为
  3. 在这种情况下,不使用嵌套视图会更容易/更好(?)。
  4. 所以我更新了我的代码以使用accordion并添加了一个事件,以便在点击标题时加载我的注释/元数据。遗憾的是,我无法为每个打开的对象保留自定义URL。如果有人更好地实现这一点,或者解决我原来的问题,请发表回答。