"建议slu term名称" AngularJS / Express应用程序中ngResource中的API调用

时间:2014-03-25 14:16:56

标签: angularjs express ngresource

我希望用户能够在我的应用程序中设置文档的slug名称(URL),但我还需要一些控件,以便用户不会互相覆盖。它需要是一个单独的调用(未与create / update集成),因此用户可以获得有关他们自己的slug名称建议的视觉反馈。

因此,我创建了一个suggestSlug API调用,该调用将可选的slug参数作为最终slug名称的种子。

这就是我的Express路线:

app.get('/api/projects/suggestSlug/:slug', projects.suggestSlug);
app.get('/api/projects/suggestSlug', projects.suggestSlug);
app.get('/api/projects', projects.list);
app.get('/api/projects/:id', projects.show);

现在,我想在客户端(AngularJS)扩展ngResource以使用此API:

angular.module('myapp.common').factory("projectModel", function ($resource) {
    return $resource(
        "/api/projects/:id",
        { id: "@id" },
        {
            update: { method: "PUT", params: { id: '@_id' } },
            del: { method: "DELETE", params: { id: '@_id' } }
        }
    );
});

如何扩展ngResource客户端以使用我的新API?

1 个答案:

答案 0 :(得分:0)

这是我的解决方案:在我的projectModel中添加一个单独的基于$ http的方法:

angular.module('myapp.common').factory("projectModel", function ($resource, $http) {

    var projectModel = $resource(
        "/api/projects/:id",
        { id: "@id" },
        {
            update: { method: "PUT", params: { id: '@_id' } },
            del: { method: "DELETE", params: { id: '@_id' } }
        }
    );

    projectModel.suggestSlug = function (slugSuggestion, callback) {
        $http.get(
            '/api/projects/suggestSlug/' + slugSuggestion
            ).success(callback).error(function(error) {
                console.log('suggestSlug error:', error);
            });
    };

    return projectModel;
});