2012-06-27 55 views
0

在batman.js中使用jQuery插件如datepicker,chosen等的最佳方式是什麼?我發現data-mixin幫手,但沒有關於如何使用它的文檔和示例。此外,我還發現這個問題:https://github.com/Shopify/batman/issues/199,但我再次無法工作,因爲它也沒有記錄。Batman.js:使用jQuery datepicker,選擇和類似的jQuery插件

理想我想要做這樣的事情:

#helpers/application_helper.js.coffee 
datePicker: (field) -> 
    $(field).datepicker() 

#some_view.html 
<input data-helper="datePicker" ... > 

回答

1

我還沒有使用過它們。不過,我認爲你應該可以使用「真正的after after過濾器」afterFilters。 AfterFiler是哪些,但他們最近被修改過,所以他們會在DOM渲染後觸發。

而通過查看測試,您應該能夠爲操作指定它們。這應該適用於DRY,並且只有afterFilter中的代碼才能執行特定操作。

test 'afterFilters on outer actions should fire after afterFilters on inner actions', 1, -> 
    order = [] 
    class TestController extends Batman.Controller 
    @afterFilter 'show', -> order.push 1 
    @afterFilter 'test', -> order.push 2 
    show: -> @render false 
    test: -> 
     @render false 
     @executeAction 'show' 

    @controller = new TestController 
    @controller.dispatch 'test' 
    deepEqual order, [1, 2] 
+0

謝謝!我已經嘗試afterFilter之前沒有成功,但似乎期望的行爲出現在主分支。在接受你的答案之前,我可以等一下嗎?也許有一個更簡單的解決方案與mixin ...再次感謝你。 –

+0

Np。如果你想出一個方法來做到這一點mixin讓我知道:) – ryanjones

1

最後,我來到的是:呼籲特別行動結束插件。例如:

#controllers action 
new: (params) -> 
    #some logic here 
    @view = @render() 
    @view.on 'ready', => 
    $('#project_due_date').datepicker() 

來自https://groups.google.com/forum/?fromgroups#!topic/batmanjs/dkYg7ijpaQI

不過,這並不看起來像解燥。我仍然在尋找更優化的東西。