4

概念実証のデモに取り組んでおり、コンテンツ配列にアイテムを追加できるフォームビューを作成する必要があります。このビューを外部からロードしてから、ハンドラーを使用してコンパイルしています。送信メソッドを追加し、{{action}}バインディングを使用しましたが、送信ボタンをクリックするたびにページが再読み込みされます。私は何が欠けていますか?

//テンプレート

<form>
    <div>
        <label for="client">Client Name</label>
        <input type="text" id="client" placeholder="Add client name" />
    </div>
    <div>
        <button {{action "addClientSubmit" target="PM.addClientView"}}>Add Client</button>
    </div>
    <div>
        <a href="#" {{action "closeWindow" target="PM"}}>close</a>
    </div>
</form>

//ビューコード

PM.addClientView = Ember.View.create({
    templateName: 'addClient',
    classNames: 'overlay',
    addClientSubmit: function(e){
        e.preventDefault();
        console.log('submitting add client form');
        console.log(a,b,c)
    }
});

//そして最後にこれが私がそれをページに追加する方法です

PM = Ember.Application.create({
    loadView: function(view){
        $.ajax({
            url: viewPath,
            success: function (template) {
                if (!Ember.TEMPLATES[templateName]) {
                    Ember.TEMPLATES[templateName] = Ember.Handlebars.compile(template);
                };
                PM[view + 'View'].appendTo('body');
            }
        });
    }
});

他のすべては機能しますが、送信ボタンをクリックするとページがリロードされます。私は何かを忘れていると確信していますが、それが何であるかを理解することはできません。

4

2 に答える 2

6

おそらくtype="button"ボタンタグに追加する必要があります。デフォルトではtype="submit"、フォームの送信がトリガーされます。

これがjsFiddleです:http://jsfiddle.net/b2CTg/2/

于 2012-06-04T17:49:29.697 に答える
1

問題は、PM.addClientViewの作成時にテンプレートが存在しないことです。

に変更PM.addClientView = Ember.View.create({してみてくださいPM.addClientView = Ember.View.extend({

そしてあなたの成功は

PM [view +'View']。create({template:Ember.Handlebars.compile(template)})。append();

これがフィドルです:http://jsfiddle.net/7E5zt/

于 2012-06-05T20:54:41.310 に答える