我有一个{{#each}}手柄帮助器,带有arrangeContent我就这样用它
{{#each arrangedContent itemController='people'}}
{{content.name}}
{{/each}}
itemController的功能是为每个项目生成虚拟视图
我想在点击内容名称时弹出一个可以通过视图完成的新窗口。 但由于我有虚拟视图,我无法做到。
MY ATTEMPT 我想象的是,如果我创建一个新视图并在{{view" App.PeopleItemView"然后它可能会起作用
所以它确实
{{#each arrangedContent itemController='people'}}
{{view 'App.PeopleItemView'}}
{{/each}}
我的人物项目视图就像这样
App.PeopleItemView = Em.View.extend({
layoutName: 'people_item',
});
但它不会这样。我仍然使用虚拟视图
更新 我在peopleController中创建了一个名为url的属性,如下所示
url: function(){
var pathArray = window.location.href.split('/');
pathArray.pop();
var newPathname = "";
for ( i = 0; i < pathArray.length; i++ ) {
newPathname += pathArray[i];
newPathname += "/";
};
newPathname+="people/"+this.get('content.id');
return newPathname;
}.property('content'),
然后按照@ppcano
的建议访问它答案 0 :(得分:0)
我认为你得到itemController
错误,因为它不应该产生任何东西,而是将项目包装在&#39;内容中。
有时你想在体内显示计算属性 一个依赖于内容中基础项的#each助手,但是 这些物品上没有。为此,请将itemController设置为 将要换行的控制器的名称(可能是ObjectController) 每个项目。
利用itemController
项可以具有计算属性等
另一方面,我相信你应该使用View&#39; templateName
属性而不是layoutName
。请参阅:defining a view。
答案 1 :(得分:0)
如果我没有错,您的内容正确显示,那么您可以创建href链接,其href值取决于您的个人内容。
{{#each item in model}}
<a target="_blank" href="{{unbound item.personUrl}}">{{item.name}}</a>
{{/each}}
如果要重定向到应用程序路由,请使用link_to helper。目前,它不支持设置目标属性,但Feature Pull Request正在进行中..
答案 2 :(得分:0)
实现此目的的最简单方法(如果我理解正确)是使用each
这样:
{{each arrangedContent itemView="item"}}
这将遍历您的arrangedContent
,并为每个项目提供App.ItemView
的实例。
然后,您可以在视图模板中按{{view.content}}
访问该项目。