如何将自定义 url 与 ember-data 一起使用?例如:
PUT /users/:user_id/deactivate
PUT /tasks/:task_id/complete
PUT /jobs/1/hold
如何将自定义 url 与 ember-data 一起使用?例如:
PUT /users/:user_id/deactivate
PUT /tasks/:task_id/complete
PUT /jobs/1/hold
现在似乎没有任何方法可以使用 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()
您可以在 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 方服务器获取资源。