2012-08-16 106 views
0

我無法獲取表單對象發佈,這裏是我到目前爲止只是使用測試數據我得到的setTarget.save是未定義的。我能夠使用類似的結構獲取/獲取調用以成功工作。保存表單對象與backbone.js模型

define([ 
'jquery', 
'underscore', 
'backbone', 
'text!templates/default/parent.html' 
], function($, _, Backbone, parentTemplate) { 
var defaultView = Backbone.View.extend({ 

    initialize: function() { 
     $(this.el).html(parentTemplate); 
       this.render(); 
    }, 

      events: { 
       'click #busNext': 'showTarget' 
      }, 

      showTarget: function() { 
     this.model.set({ 
     businessName: $('#busInfoName').val(), 
     }); 
       this.model.save(); 
    }, 

      render: function() { 
       this.setValidator(); 
     return this; 
    } 

}); 
return new defaultView; 
}); 

示範

define([ 
    'underscore', 
    'backbone' 
], function(_, Backbone) { 
    var setTarget = Backbone.Model.extend({ 

    initialize: function() { 
     console.log('set target initialize'); 
    }, 

    url: 'test.htm', 

    defaults: { 
     businessName: "", 
     businessPhone: "" 
    } 

    }); 

    return setTarget; 
}); 

收集

define([ 
    'jquery', 
    'underscore', 
    'backbone', 
'models/setTarget' 
], function($, _, Backbone, setTarget){ 
    var target = Backbone.Collection.extend({ 

    model: setTarget, 

    }); 

    return new target; 
}); 

路由器

define([ 
    'jquery', 
    'underscore', 
    'backbone', 
'validate', 
'views/default/parent', 
'models/setTarget', 
'collections/target' 
], function($, _, Backbone, validate, defaultView, setTarget, target) { 
var AppRouter = Backbone.Router.extend({ 

    routes: { 
        '': 'defaultAction', 
        'index': 'defaultAction', 
    }, 

    defaultAction: function(actions) { 
     this.changePage(defaultView, 'fade'); 
    }, 

    changePage: function(page, pageTransition) { 
     $('body').append($(page.el)); 
     $.mobile.changePage($(page.el), { changeHash: true, transition: pageTransition  }); 
     } 

    }); 

    var initialize = function() { 
     var app_router = new AppRouter; 
     Backbone.history.start(); 
    }; 

    return { 
     initialize: initialize 
    }; 
}); 
+0

在點擊後調試並檢查視圖中的「setTarget」對象。我猜這不是Backbone.Collection? – 2012-08-16 02:21:02

+0

我試圖提供一個答案,但在任何一步我發現一個新問題。在你的示例代碼中,很多情況下你正在使用_Classes_類似_instances_。你必須創建你的clases的實例,並且與不使用Classes的實例一起玩。您的RequireJS函數正在返回類而不是實例,並且您正在使用這些類而不實例化它們。不僅在'setTarget'也在'parentTemplate' ... – fguillen 2012-08-16 08:33:15

+0

感謝您的答覆,我更新了代碼幷包含了路由器,我想我只是困惑如何設置模型,任何洞察力將不勝感激。 – user1572796 2012-08-17 07:42:10

回答

0

感謝您的意見,閱讀這些條款後,我決定去這個問題的不同方式。我不是使用model.save,而是使用collectioninstancename.fetch方法,並在集合中覆蓋設置,以便它POST而不是GET,它似乎工作正常。