Не могу заставить работать AngularFire '$update'

Я довольно новичок в Angular, Firebase и AngularFire, так что, вероятно, я поступаю неправильно.

В основном у меня есть форма в модальном режиме (UI Bootstrap), и я хочу обновить некоторые ранее сохраненные значения, но AngularFire '$ update' не обновляет их в Firebase. Создание и удаление элементов вне модального режима работает нормально.

Это в пределах моей службы:

updateItem: function (id, item) {   
    var item_ref = new Firebase(FIREBASE_URL + ‘/items/‘ + user_id + '/' + id);
    var item = $firebase(item_ref);         
    item.$update({
      name: item.name,
      notes: item.notes
    });
}

Это в моем контроллере:

$scope.edit = function(id) {

    $modal.open({
    templateUrl: 'views/item.html',
    backdrop: 'static',
    keyboard: false,
    resolve: {
      data: function() {
        return {
          title: 'Edit item',
          item: Items.getItem(id)
        };
      }
    },
    controller: 'EditItemCtrl'
    })
    .result.then(function(item) {
      Items.updateItem(item.$id, item);
    });

};

Это мой модальный контроллер:

app.controller('EditItemCtrl', function ($scope, $modalInstance, data) {

  $scope.data = data;

  $scope.ok = function(item) {
     $modalInstance.close(item);
    };

  $scope.cancel = function() {
    $modalInstance.dismiss();
  };

});

Это мой модальный шаблон:

<div class="modal-content">
    <div class="modal-header">
        <button class="close" style="margin-top: -10px;" type="button" ng-click="cancel()">×</button>       
        <h3>{{data.title}}</h3>
    </div>  
    <div class="modal-body">
      <form name="editItem" role="form" novalidate>
        <div class="form-group">
          <label class="sr-only" for="itemName">Item name</label>
          <input name="name" type="text" class="form-control" placeholder="Item name" value="{{data.item.name}}" ng-model="data.item.name">
        </div>
        <div class="form-group">
          <label class="sr-only" for="itemNotes">Item notes</label>
          <textarea name="notes" class="form-control" rows="2" id="itemNotes" placeholder="Notes" ng-model="data.item.notes" ng-maxlength="500">{{data.item.notes}}</textarea>
        </div>
      </form>
    </div>
    <div class="modal-footer">
        <button class="btn btn-default" type="button" ng-click="cancel()">Cancel</button>
        <button class="btn btn-primary" type="button" ng-click="ok(editItem.data.item)">OK</button>
    </div>
</div>

Пройдя все, вы увидите, что элемент, который нужно обновить, и новые значения передаются в сервис, но они не попадают в Firebase.

Я предполагаю, что я, вероятно, поступаю об этом неправильно, хотя - любое руководство будет высоко ценится.

0 ответов

Другие вопросы по тегам