使用Restangular创建面向对象的AngularJS模型

时间:2014-06-26 21:01:24

标签: javascript angularjs restangular code-cleanup

我是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工具TypeError: Cannot read property 'then' of undefined收到错误。

我该如何使这项工作?这是实现模型的好方法吗?

1 个答案:

答案 0 :(得分:2)

在您的控制器中,您错过了all方法中的括号:

变化:

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

为:

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

您还需要在工厂中返回Testimonial的新实例:

变化:

return Testimonial;

为:

return new Testimonial();