5

forms私のプロジェクトには、多くの検証とサーバー呼び出しを伴うものはほとんどありません。そこで、'backbone-forms.js'これらに使おうと考えました。現在、私はこのコードをいじっています: http://jsfiddle.net/evilcelery/VkUFu/'backbone-forms.js'すべてのニーズに応える かどうかを確認します。

確かに、 https://github.com/powmedia/backbone-forms#customising-templatesindividual componentsで定義されているように、「リスト」、「日付」などの独自のカスタム テンプレートを提供できます。しかし、私の職場では、必要な外観に基づいてクラスとマークアップを編集できるように、すべての html テンプレートを JavaScript 実装から独立させる必要があります (JavaScript コーディングは、変更されないフィールドに基づいています)。私の問題は、 を使用して作成されたフォームに独自のカスタム テンプレートを使用できないことです。ids'backbone-forms.js'

template.html を javascript から独立させる方法はありますか (handlebars.js の場合のように) ?

コンパイルされたハンドルバー テンプレートを template.html のすべてのフォーム フィールドで使用し、Backbone.Form 機能を使用する方法はありますか?それとも不可能ですか?

ありがとう。

4

1 に答える 1

4

私があなたの質問をよく理解していれば、バックボーンフォームにスキーマからレンダリングさせたり、醜い方法で定義したりするのではなく、個々のソースから動的に (.../templates/category.html などから) html テンプレートをロードすることをお勧めします。ここのようなJavaScriptコード

html テンプレートを外出先で ajax (または Require.js を使用) を使用して文字列として読み込み、 を呼び出すことができますBackbone.Form.setTemplates({templateName: templateBodyAsString})。すでに登録されている他のテンプレートを他の名前でオーバーライドすることはありませんsetTemplates。以下の の実装を参照してください。

を使用すると、フォーム レンダリング コードをコールバック$.ajax()に入れることができます。successを使用するRequire.jsと、キャッシング メカニズムは言うまでもなく簡単になります。すべての BB モジュール/フォームが毎回独自のテンプレートをロードするRequire.jsと、モジュールが同じテンプレートを最初に必要とするときにのみ ajax リクエストが実行されます。

関数の本体Backbone.Form.setTemplates:

function (templates, classNames) {
    var createTemplate = helpers.createTemplate;

    Form.templates = Form.templates || {};
    Form.classNames = Form.classNames || {};

    //Set templates, compiling them if necessary
    _.each(templates, function(template, key, index) {
      if (_.isString(template)) template = createTemplate(template);

      Form.templates[key] = template;
    });

    //Set class names
    _.extend(Form.classNames, classNames);
  } 
于 2012-11-22T19:50:05.107 に答える