2015-05-11 3 views
0

Я использую angularfire для управления некоторыми онлайн-курсами, и у меня есть курсы, в которых есть много лекций. Я вложил лекции в курсы. У меня есть фабрика, которая успешно разрешает операции CRUD на моих курсах, но для моих лекций я могу делать все. кроме удалить. Может ли кто-нибудь сказать мне, что я делаю неправильно с удалением? Спасибо!

Курсы Фабрика:

angular.module('rutileApp') 
    .factory('Course', function ($firebaseArray, $firebaseObject, Ref) { 
    var courses = $firebaseArray(Ref.child('courses')); 

    var Course = { 
     all: courses, 
     create: function (course) { 
     return courses.$add(course); 
     }, 
     get: function(courseId) { 
     return $firebaseObject(Ref.child('courses').child(courseId)); 
     }, 
     delete: function(course) { 
     return courses.$remove(course); 
     } 
    }; 

    return Course; 
    }); 

Лекции Фабрика:

angular.module('rutileApp') 
    .factory('Lecture', function ($firebaseArray, $firebaseObject, Ref) { 

    var Lecture = { 
     create: function (courseId, lecture) { 
     return $firebaseArray(Ref.child('courses').child(courseId) 
      .child('lectures')).$add(lecture); 
     }, 
     get: function(courseId, lectureId) { 
     return $firebaseObject(Ref.child('courses') 
     .child(courseId).child('lectures').child(lectureId)); 
     }, 
     fromCourse: function(courseId) { 
     return $firebaseArray(Ref.child('courses') 
      .child(courseId).child('lectures')); 
     }, 
     delete: function(courseId,lecture) { 
     return $firebaseArray(Ref.child('courses').child(courseId) 
      .child('lectures')).$remove(lecture); 
     } 
    }; 

    return Lecture; 
    }); 

Курсы управления:

$scope.deleteCourse = function (course) { 
    Course.delete(course); 
}; 

Контроллер курса:

$scope.deleteLecture = function (courseId, lecture) { 
    Lecture.delete(courseId, lecture); 
}; 

курсы Вид:

<table class="table table-striped"> 
    <thead> 
     <tr> 
     <th></th> 
     </tr> 
    </thead> 
    <tbody> 
     <tr ng-repeat="course in courses"> 
     <td> 
      <button class="btn btn-primary" 
        ng-really-click="deleteCourse(course)" 
        ng-really-message="Are you sure?"> 
      Delete 
      </button> 
     </td> 
     </tr> 
    </tbody> 
    </table> 

Course Вид:

<table class="table table-striped"> 
    <thead> 
    <th></th> 
    </thead> 
    <tbody> 
    <tr ng-repeat="lecture in lectures"> 
     <td> 
     <button class="btn btn-primary" 
       ng-really-click="deleteLecture(course.$id, lecture)" 
       ng-really-message="Are you sure?"> 
      Delete 
     </button> 
     </td> 
    </tr> 
    </tbody> 
</table> 

Это также происходит, если я deleteLecture (курс $ ID, лекционный $ ID..).

This is the code for ng-really if you are curious.

+0

Это ничего не значит? Любые ошибки? –

+1

Whyyyyyeeeee возьмите красивую модель в реальном времени, такую ​​как Firebase, и превратите ее в сервис CRUD? Мои глаза. Кроме того, просто верните экземпляр $ firebaseArray, у которого уже есть все методы, которые вы его обернули для создания. $ add, $ remove, $ getRecord. – Kato

ответ

1

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

+0

Это подтверждает, что я хочу удалить запись, но когда я говорю «да», она не удалила ее. Когда я сообщаю о console.log для идентификатора курса и идентификатора лекции, они правильно сообщают о правильных индексах. Рекомендуется ли переходить индекс в объект $ remove или firebase? На моих курсах я, кажется, передаю объект, и он удаляет его без проблем. Я переключился на удаление, и это не решило проблему. – Coherent

0

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

<tr ng-repeat="(id, lecture) in lectures"> 
    <button class="btn btn-primary" 
      ng-really-click="lectures.$remove(lecture)" 
      ng-really-message="Are you sure?"> 
     Delete 
    </button> 
    </td> 
</tr> 

Оставшийся вопрос, что $ удалить не кажется, будет работать все, что вложенно. Если я использую firebase, чтобы вытащить вложенное свойство лекции, я не могу использовать $ remove.

<div ng-repeat="(id, lecture) in lectures"> 
    <div ng-repeat="(id, questions) in lecture.questions"> 
    <button class="btn btn-primary" 
     ng-really-click="lectures.$remove(question)" 
     ng-really-message="Are you sure?"> 
    Delete 
    </button> 
    </div> 
</div> 

Итак, лекции. $ Remove не работает, каков правильный способ справиться с этим?