1

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'

])

angular と一緒に使用される DataTable プラグインの欠点は、project.$update() を呼び出すたびに、そのプロジェクトがビューから消えることです。

したがって、再初期化して DataTable をリロードする必要があります。今のところそれで問題ありませんが、この DataTable を配置できる $resource のユニバーサル コールバックを設定できる方法があるかどうか疑問に思っていました。再初期化呼び出し?

ありがとう!

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 に答える