Создание объектно-ориентированной модели AngularJS с Restangular

Я новичок в Angular и пытаюсь выяснить, как создать модель для очистки моего контроллера. Я использую Restangular и создал фабрику, которая возвращает объект модели.

Я думал, что мог бы сделать что-то вроде этого...

модель

Testimonials.factory('Testimonial', ['Restangular', function(Restangular) {

    /**
     * Constructor
     */
    function Testimonial() {
        // public properties, assigned to the instance ('this')
    }

    Testimonial.prototype.all = function() {
        return Restangular.all('testimonials').getList();
    }

    /**
     * Return the constructor function
     */
    return Testimonial;
}]);

контроллер

Testimonials.controller('TestimonialsController', ['$scope', 'Testimonial', function($scope, Testimonial) {

    Testimonial.all.then(function (testimonials) {
        $scope.testimonials = testimonials;
    });
}]);

Я получаю сообщение об ошибке в chome dev tools, TypeError: Cannot read property 'then' of undefined,

Как я могу сделать эту работу? И это хороший способ реализовать модель?

1 ответ

Решение

В вашем контроллере, вы пропустите скобки в вашем all метод:

менять:

 Testimonial.all.then(function (testimonials) {
        $scope.testimonials = testimonials;
 });

чтобы:

 Testimonial.all().then(function (testimonials) {
        $scope.testimonials = testimonials;
 });

и вам также нужно вернуть новый экземпляр Testimonial на вашем заводе:

менять:

return Testimonial;

чтобы:

return new Testimonial();
Другие вопросы по тегам