2013-11-21 35 views
0

我在使用angularjs指令尝试渲染两列的表格。AngularJs。用ng重复和ng开关渲染表格

<table> 
<tr ng-repeat="message in messages" > 
    <td ng-switch-on="message.network" ng-switch when="twitter" ng-controller="TweetController"> 
     <span> 
      <input type="checkbox" name="active" ng-checked="{{message.isPublished}}" data-id="{{message.socialId}}" ng-click="publishMessage($event)" /> 
     </span> 
     <span> 
      <img src="{{message.authorPicture}}" /> 
     </span> 
     <span>{{message.createdAt}}</span> 
     <span>{{message.network}}</span> 
     <span>{{message.text}}</span> 
    </td> 
    <td ng-switch-on="message.network" ng-switch when="facebook" ng-controller="FacebookController"> 
     <span> 
      <input type="checkbox" name="active" ng-checked="{{message.isPublished}}" data-id="{{message.socialId}}" data-createdAt="{{message.createdAt}}" ng-click="publishMessage($event)" /> 
     </span> 
     <span> 
      <img src="{{message.authorPicture}}" /> 
     </span> 
     <span>{{message.createdAt}}</span> 
     <span>{{message.network}}</span> 
     <span>{{message.text}}</span> 
    </td> 
</tr> 
</table> 

应该有2列 - 第一个应该是twitter消息,第二个应该是facebook的帖子。但在我的情况下,同样的消息呈现在两列(像这样http://puu.sh/5oHT7.png)。我做错了什么?

+0

我不认为你需要'ngSwitch'这里。为了简单起见,您可以重新构造'$ scope.messages',使其每个项目都包含来自两个网络的数据。 – AlwaysALearner

+0

你可以分享'$ scope.messages'的内容吗? – AlwaysALearner

+0

当然)) http://pastebin.com/SSMiy6kL –

回答

2

为了简单起见,只是重组模式:

$scope.messages = [ 
    [ 
     { 
      "network": "twitter", 
      ... 
     }, 
     { 
      "network": "facebook", 
      ... 
     } 
    ], 
    [ 
     { 
      "network": "twitter", 
      ... 
     }, 
     { 
      "network": "facebook", 
      ... 
     } 
    ]  
] 

HTML:

<table> 
    <tr ng-repeat="message in messages" > 
     <td ng-repeat="msg in message"> 
      <div ng-if="msg.network == 'twitter'"> 
       <div ng-controller="TweetController"> 
        ... 
        <span>{{msg.createdAt}}</span> 
        <span>{{msg.network}}</span> 
        <span>{{msg.text}}</span> 
       </div> 
      </div> 
      <div ng-if="msg.network == 'facebook'"> 
       <div ng-controller="FacebookController"> 
        ... 
        <span>{{msg.createdAt}}</span> 
        <span>{{msg.network}}</span> 
        <span>{{msg.text}}</span> 
       </div> 
      </div> 
     </td>  
    </tr> 
</table> 
+0

但是对于facebbok我使用FacebookController,Twitter的TwitterController。如何确定在什么情况下使用twitter控制器,以及在什么 - facebook控制器? –

+0

@SvetlanaIvanova看看我的更新。 – AlwaysALearner

+0

非常感谢!这是令人愉快的! :-) –