因此,我在Firebase中有一些消息,包括text
,auther
和like
。我正在用ng-repeat来讨论它们:
<li ng-repeat="message in messages">
我想添加一个按钮来消息/喜欢这条消息。我尝试过各种各样的东西,没有用过。我希望能找到类似的东西:
<span ng-if="message.like"><button ng-click="message.$setValue({like: !message.like})">Disslike Message</button></span>
<span ng-if="!message.like"><button ng-click="message.$setValue({like: !message.like})">Like Message</button></span>
我也尝试将消息传递给一个函数,但是 - 没有工作:\
答案 0 :(得分:2)
通常的方法是使用$index
魔术变量(代表当前项目的索引)来调用控制器函数 - 而不是在对象上存储函数来修改自身:
<button ng-click="invertLike($index)">
在你的控制器中:
$scope.invertLike = function (index) {
messages[index].like = !messages[index].like;
};
答案 1 :(得分:2)
我想你想在运行时在喜欢和不喜欢的按钮之间切换。请参阅下文。 JSFiddle供参考 - Demo 希望这有帮助!
<body ng-app="SampleApp">
<table ng-controller="myController" border="1px">
<thead>
<tr>
<td>text</td>
<td>author</td>
<td>like/dislike button</td>
</tr>
</thead>
<tbody ng-repeat="message in messages">
<tr>
<td>{{message.text}}</td>
<td>{{message.author}}</td>
<td>
<button ng-click="message.like = !message.like">
<span ng-show="message.like">Like Button</span>
<span ng-show="!message.like">Dislike Button</span>
</button>
</td>
</tr>
</tbody>
</table>
</body>
答案 2 :(得分:0)
好的,所以我做了一些混合和匹配Sumit&amp; Ven的答案。 谢谢你们两个!
在html中:
<button ng-click="message.like = !message.like; invertLike($index)">
<span ng-show="!message.like">Like Button</span>
<span ng-show="message.like">Dislike Button</span>
</button>
在控制器中:
$scope.invertLike = function(index) {
$scope.messages.$save(index);
};