2012-09-18 63 views
4

这是我的基本场景。对于项目列表(摘要视图),我想显示在同一页面上单击的项目的详细信息视图。Angularjs列表和详细视图

我拿了这个jsfiddle example,并将它转换成这个jsfiddle。如果你看看它第一次工作的行为,但它不一致。

也许有人可以帮助我,或建议更好的方法。我想有一个不同的控制器来管理列表和一个不同的控制器来处理详细视图。

回答

12

转化的例子(前提是您要使用ngSwitch)的一个方法是:

<ul ng-controller="ListController"> 
    <li ng-repeat="item in items" ng-controller="ItemController"> 
     <div ng-click="open(item)">{{item.content}}</div>   
    </li> 
    <hr> 
    <ng-switch on="anyItemOpen()"> 
    <div ng-switch-when="true"> 
     <div ng-controller="ItemController"> 
      {{opened.name}}: overlay: tweet, share, pin 
     </div> 
     <a ng-click="close()">close</a>   
    </div> 
    </ng-switch> 
</ul> 

这里是工作的jsfiddle:http://jsfiddle.net/pkozlowski_opensource/sJdzt/4/

,因为你是你的jsfiddle没有工作试图引用在ngRepeat作用域中创建的item(因此在ngRepeat之外不可用)。

+0

非常感谢。为什么我这样编码是因为我想要ItemController来操纵选中的项目。我可以将打开的项目传递给ItemController的本地范围,然后从ItemController范围方法中操作项目吗? – Chandermani

+0

@Chandermani:只需触发一个包含已打开项目的事件,并从ItemController中捕获事件。 – JayPrime2012