在ng-repeat中设置项目的值(firebase,angular)

时间:2016-02-01 15:55:18

标签: angularjs firebase angularjs-ng-repeat angularfire

因此,我在Firebase中有一些消息,包括textautherlike。我正在用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>

我也尝试将消息传递给一个函数,但是 - 没有工作:\

3 个答案:

答案 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);
};