在 ng-repeat 中设置一个项目的值 (firebase, angular)
Setting a value of an item in ng-repeat (firebase, angular)
所以,我在 Firebase 中有一些消息,text
、auther
和 like
。我将使用 ng-repeat 复习它们:
<li ng-repeat="message in messages">
我想为 diss/like 消息添加一个按钮。我尝试了各种方法,none 成功了。我希望找到类似的东西:
<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>
我也尝试将消息传递给一个函数,但也没有成功:\
解决这个问题的通常方法是调用控制器函数,使用 $index
魔法变量(代表当前项目的索引)——而不是在对象上存储函数来修改自身:
<button ng-click="invertLike($index)">
在你的控制器中:
$scope.invertLike = function (index) {
messages[index].like = !messages[index].like;
};
我想你想在运行时在喜欢和不喜欢按钮之间切换。请参阅下文以执行此操作。 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>
好的,所以我对 Sumit 和 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);
};
所以,我在 Firebase 中有一些消息,text
、auther
和 like
。我将使用 ng-repeat 复习它们:
<li ng-repeat="message in messages">
我想为 diss/like 消息添加一个按钮。我尝试了各种方法,none 成功了。我希望找到类似的东西:
<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>
我也尝试将消息传递给一个函数,但也没有成功:\
解决这个问题的通常方法是调用控制器函数,使用 $index
魔法变量(代表当前项目的索引)——而不是在对象上存储函数来修改自身:
<button ng-click="invertLike($index)">
在你的控制器中:
$scope.invertLike = function (index) {
messages[index].like = !messages[index].like;
};
我想你想在运行时在喜欢和不喜欢按钮之间切换。请参阅下文以执行此操作。 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>
好的,所以我对 Sumit 和 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);
};