angularjs $资源回调

时间:2012-11-20 21:21:14

标签: angularjs

我有一个名为Project的模型,其成员是表中的行,更具体地说,是由jQuery DataTables插件装饰的表

这是我在coffeescript中的项目模型

#= require vendor/angular.js

Project = angular.module('Project', ['ngResource'])
.value( 'csrf', $('meta[name="csrf-token"]').attr('content') )

.factory('Project', ['$resource','csrf', ($resource, csrf) ->
  $resource '/projects/:project_id/:action', {authenticity_token: csrf, project_id:'@id'},
    query:
      method: 'GET'
      isArray: yes
    new:
      method: 'GET'
      params:
        project_id: 'new'
    edit:
      method: 'GET'
    update:
      method: 'PUT'

])

与角度一起使用的DataTable插件的一个缺点是每当我这样一个项目。$ update()时,该项目从视图中消失

所以我必须通过重新初始化来重新加载DataTable,我现在可以忍受它,但我当时想知道,如果有一种方法可以设置$ resource的通用回调,我可以把这个DataTables重新初始化调用?

谢谢!

1 个答案:

答案 0 :(得分:0)

我假设在控制器中你从哪里调用工厂,你就有了某种包装方法。

我们称之为scope.crudData

 SomeCtrl = (scope, http, projectService)
      scope.crudData(p_id, act, method) ->
          meth = YOUR LOGIC FOR PARSING AN ACTUAL FUNCTION FROM THE METHOD NAME GOES HERE
          projectService.meth
              project_id: p_id
              act: action
          , (response) ->
               THIS IS WHERE YOUR CALLBACK LIVES. KNOCK YOURSELF OUT. RELOAD THE DATA DO ANYTHING YOU WANT

如果这还不够好,我可以假设在配置中为所有ajax请求注册一个监听器,验证数据等。

如果您正在寻找的话,请告诉我,我会为您准备一些伪代码。