1

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

这是我在咖啡脚本中的项目模型

#= 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'

])

与 Angular 一起使用的 DataTable 插件的一个缺点是,每当我使用 project.$update() 时,该项目就会从视图中消失

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

谢谢!

4

1 回答 1

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 请求注册一个侦听器,验证数据等。

让我知道这是否是您正在寻找的东西,我会为您整理一些伪代码。

于 2012-11-20T21:31:00.267 回答