0

私のFirebase + Angular(AngularFireを使用)アプリには、ng-repeatを使用してテーブルとしてフォーマットされたオブジェクトの配列があります。各行は異なるオブジェクトです。

Firebase Simple Login で現在ログインしているユーザーに特定のオブジェクトを「割り当てる」オプションを追加したいと考えています。deleteItem(item) に似た関数 assignTo(item) を追加しましたが、うまくいきません。

私は何を間違っていますか?

<div ng-controller="itemsCtrl">
  <table>
    <tr ng-repeat="item in items">
    <!-- table row aka object starts here -->
    <td>
      {{ item.assignedTo}}
    </td>
    <td>
      <form ng-submit="assignTo(item)">
       <button ng-click="items.$save(item)"class="btn btn-default">Assign</button>
      </form>               
        </td>
        <td>
          <form ng-submit="deleteItem(item)">
        <button ng-click="items.$remove(item)">Remove</button>
        </form>
      </td>
    </tr>
  </table>
</form>
<!-- table row aka object ends here -->
...
</div>

これが私のコントローラーです

app.controller("itemsCtrl", ["$scope", '$rootScope', "$firebase", "simpleLogin",
   function($scope, $rootScope, $firebase, simpleLogin) {
     var ref = new Firebase("https://--------.firebaseio.com/");
     $scope.items = [];
     var sync = $firebase(ref);
     $scope.items = sync.$asArray();
     $rootScope.auth = simpleLogin;

    ...

     $scope.assignTo = function(assignedTo) {
       $scope.items[i].assignedTo = $rootScope.auth.user.displayName;
       $scope.items[i].$save(i)
     };
   }
 ]);

更新:これで問題が解決しました

<tr ng-repeat="(key, item) in items">
...
<td>
<button ng-click="assignTo(key)" class="btn btn-default">Assign</button>
</td>

 $scope.assignTo = function(key) {
   console.log($scope.items[key].assignedTo);
   $scope.items[key].assignedTo = $rootScope.auth.user.displayName;;
   $scope.items.$save(key);
 };
4

1 に答える 1