2015-09-17 51 views
0

根據this文檔BootstrapValidator支持自定義驗證回調。在CoffeeScript中定義BootstrapValidator回調

<input type="text" class="form-control" name="captcha" 
      data-bv-callback="true" 
      data-bv-callback-message="Wrong answer" 
      data-bv-callback-callback="checkCaptcha" /> 

function checkCaptcha(value, validator){} 

但是我怎樣才能在CoffeeScript中定義相同的回調?我試圖定義全局函數沒有成功的情況下:

@checkCaptcha = (value, validator) -> 

在使用@checkCaptcha的情況下,有必要建立

data-bv-callback-callback="document.checkCaptcha" /> 

這是一個有點難看。是否有一些範圍對象,可以用於我的目的?

UPD。

$ -> 
    f = (x) -> 
     console.log(x) 

f(123) //error 
window.f(123) //error 
document.f(123) //works well 


$ -> 
    @f = (x) -> 
     console.log(x) 

f(123) //error 
window.f(123) //error 
document.f(123) //works well 
+0

嘗試不用'@',然後喲你的函數應該在'window'對象上。儘管這不是最佳做法,但很可能會解決您的問題。 – ccg

+0

如果你想定義'window.f',爲什麼不這樣做呢? –

回答

1

爲什麼不包括然後用這個涼爽的命名空間功能recommended by Coffeescript's creator himself

namespace = (target, name, block) -> 
    [target, name, block] = [(exports ? window), arguments...] if arguments.length < 3 
    top = target 
    target = target[item] ?= {} for item in name.split '.' 
    block target, top 

...那麼你可以讓自己的命名空間:

namespace 'Captcha', (exports)-> 
    exports.checkCaptcha = (value, validator) -> 

及用途:

data-bv-callback-callback="Captcha.checkCaptcha"