15

getTemplates 関数を return から移動する必要がありますか?

例:「XXXXXXX」を何に置き換えるかわかりません(「this/self/templateFactory」などを試しました...):

.factory('templateFactory', [
    '$http',
    function($http) {

        var templates = [];

        return {
            getTemplates : function () {
                $http
                    .get('../api/index.php/path/templates.json')
                    .success ( function (data) {
                        templates = data;
                    });
                return templates;
            },
            delete : function (id) {
                $http.delete('../api/index.php/path/templates/' + id + '.json')
                .success(function() {
                    templates = XXXXXXX.getTemplates();
                });
            }
        };
    }
])
4

2 に答える 2

38

そうtemplates = this.getTemplates();することで、まだインスタンス化されていないオブジェクト プロパティを参照しています。

代わりに、オブジェクトを徐々に移入できます。

.factory('templateFactory', ['$http', function($http) {
    var templates = [];
    var obj = {};
    obj.getTemplates = function(){
        $http.get('../api/index.php/path/templates.json')
            .success ( function (data) {
                templates = data;
            });
        return templates;
    }
    obj.delete = function (id) {
        $http.delete('../api/index.php/path/templates/' + id + '.json')
            .success(function() {
                templates = obj.getTemplates();
            });
    }
    return obj;       
}]);
于 2013-08-14T14:30:24.070 に答える