私の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);
};