4

如何将自定义 url 与 ember-data 一起使用?例如:

PUT /users/:user_id/deactivate
PUT /tasks/:task_id/complete
PUT /jobs/1/hold
4

2 回答 2

1

现在似乎没有任何方法可以使用 ember-data 执行此操作。然而,仅仅回到 ajax 并改用它是微不足道的。例如:

App.UsersController = Ember.ArrayController.extend
  actions:
    deactivate: (user) ->
      # Set the user to be deactivated
      user.set('deactivated', true)

      # AJAX PUT request to deactivate the user on the server
      self = @
      $.ajax({
        url: "/users/#{user.get('id')}/deactivate"
        type: 'PUT'
      }).done(->
        # successful response. Transition somewhere else or do whatever
      ).fail (response) ->
        # something went wrong, deal with the response (response.responseJSON) and rollback any changes to the user
        user.rollback()
于 2013-11-26T19:58:03.173 回答
0

您可以在 Ember 路由器中定义相当复杂的 URL。

App.Router.map(function() {
  this.resource('posts', function() {
    this.route('new');
  });
  this.resource('post', { path: '/posts/:post_id' }, function() {
    this.resource('comments', function() {
      this.route('new');
    });
    this.route('comment', { path: 'comments/:comment_id'});
  });
});

这给了我们:

/posts
/posts/new
/posts/:post_id
/posts/:posts_id/comments
/posts/:posts_id/comments/new
/posts/:posts_id/comments/:comment_id

Ember 决定是否使用 GET、POST、PUT 或 DELETE,取决于它是从服务器获取、持久化新资源、更新现有资源还是删除它。

请参阅此处了解基本但功能正常的博客类型应用程序,其中包含可以持久保存的帖子和评论,或这里了解更复杂的应用程序,该应用程序从 3rd 方服务器获取资源。

于 2013-10-28T14:30:43.630 回答