我有一个列出消息的聊天应用程序 - 如果当前消息和之前的消息是由同一个用户发布的,我不希望在当前消息上显示用户名.
为了开始这个,我试图导航出来foreach以通过相对索引访问数组.看起来我甚至无法通过直接索引访问项目,但:
<ul data-bind="foreach:array1">
<li data-bind="text:$parent.array1()[0]">Should be John, works</li>
<li data-bind="text:$parent.array1()[$index]">Should be the same as $data, but throws error</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
最后,我想做以下事情:
<ul data-bind="foreach:array1">
<li data-bind="text:$parent.array1()[$index - 1]">Happens after index 0 only</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
小提琴演示第一期:http: //jsfiddle.net/xveEP/148/
怎么能实现这一目标?
如果您检查Knockout更改日志,$index则在2.1.0 版本中实现:http://blog.stevensanderson.com/2012/05/09/knockout-2-1-0-released/因此在jsfiddle中更改版本解决了问题1 .你不会再看到错误了.
现在你必须$index正确绑定.根据文档,它是一个可观察的,所以要在表达式中使用它,你需要返回它的值:data-bind="text:$parent.array1()[$index()]".敲除文本绑定文档注1:http://knockoutjs.com/documentation/text-binding.html
这给了我们工作jsfiddle:http://jsfiddle.net/xveEP/150/
当您将相同的解决方案(更改版本并$index()在表达式中使用)添加到第二个问题时,您可以执行您想要的操作:http://jsfiddle.net/xveEP/151/
| 归档时间: |
|
| 查看次数: |
2673 次 |
| 最近记录: |