2013-05-05 91 views
4

我正在嘗試將Stripe「Pay with Card」結帳集成到骨幹節點環境中。在服務器端,我使用Stripe節點代碼 - 該部分工作良好。但是,在客戶端,我無法捕獲該事件。如何在骨幹網中集成Stripe「Pay with Card」

我想從Stripe彈出框中捕獲提交事件以在視圖中調用「paymentcharge」方法。

這裏是我的代碼:

<!-- Stripe Payments Form Template --> 
<form id="stripepaymentform" class="paymentformclass"> 
    <script 
     src="https://checkout.stripe.com/v2/checkout.js" class="stripe-button" 
     data-key="pk_test_xxxxxxxxxxxxx" 
     data-amount="0299" 
     data-name="MyDemo" 
     data-description="charge for something" 
     data-image="assets\ico\icon-72.png"> 
    </script> 
</form> 

骨幹視圖類

myprog.PaymentPanelView = Backbone.View.extend({ 
    initialize: function() { 
     this.render(); 
    }, 
    render: function() { 
     $(this.el).html(this.template()); 
     return this; 
    }, 
    events : { 
     "submit" : "paymentcharge" 
    }, 
    paymentcharge : function(event) { 
     this.model.set({stripeToken: stripeToken}); 
    } 
}); 

骨幹模型類

var PaymentChargeModel = Backbone.Model.extend({ 
    url: function(){ 
     return '/api/paymentcharge'; 
    }, 
    defaults: { 
    } 
}) 

設置/呼叫從標題菜單事件查看

if (!this.paymentPanelView) { 
    this.paymentPanelView = new PaymentPanelView({model: new PaymentChargeModel()}); 
} 
$('#content').html(this.paymentPanelView.el); 
this.paymentPanelView.delegateEvents(); 
this.selectMenuItem('payment-menu'); 
+1

您可能希望查看圍繞stripe.js的'Backbone.Model'包裝器[**'backbone-stripe' **](https://github.com/amccloud/backbone-stripe)。 – chridam 2016-01-07 16:25:07

回答

0

我認爲問題與您的查看的el和您正在收聽的事件有關。

您永遠不會明確定義您的視圖的el,這意味着它將被初始化爲獨立的<div>元素。然後,使用模板來填充<div>以及模板中的表單元素。即使您的<div>已分離,您也會看到內容,因爲您使用jquery將el的內容添加到#content

我認爲問題是,你在聽在你的el一個submit事件上<div>,不包含<form>。試着改變你的活動散列這樣的:

events: { 
    'submit form#stripepaymentform': 'paymentcharge' 
} 

基本上,聆聽到jQuery的.on所包含的元素上的事件一樣。您也可以直接點擊按鈕,如下所示:

'click #mysubmitbutton': 'paymentcharge' 

希望這有助於您!