我被赋予了将这些咖啡脚本代码移到类
中的任务format = (icon) ->
originalOption = icon.element
'<i class="fa ' + $(originalOption).data('icon') + '"></i> ' + icon.text
$(document).ready ->
$('.select2-fountawesome-icon').select2
width: '100%'
formatResult: format
它是一个rails应用程序,正在application.js.coffee
中工作。
这是我目前在scenario-page.js.coffee
class @ScenarioPage
constructor: ->
@format()
@enabledSelect2()
format: (icon) ->
originalOption = icon.element
'<i class="fa ' + $(originalOption).data('icon') + '"></i> ' + icon.text
enabledSelect2: () ->
$('.select2-fountawesome-icon').select2
width: '100%'
formatResult: format
我创建了一个带有构造函数的类,用于初始化实例方法/属性。我放弃了document.ready
因为咖啡脚本无论如何加载了它。应该正确定义类中的函数。我用try coffeescript转换为js,看起来是正确的。我不确定我的新课程有什么问题?第一个片段确实有用。
答案 0 :(得分:0)
我在您的代码中看到两个错误:
class @ScenarioPage #<---- @ shouldn't be here
constructor: ->
@format() #<---- the icon param is missing, which will cause an error below
@enabledSelect2()
format: (icon) ->
originalOption = icon.element
'<i class="fa ' + $(originalOption).data('icon') + '"></i> ' + icon.text
enabledSelect2: () ->
$('.select2-fountawesome-icon').select2
width: '100%'
formatResult: format
如果我可以添加一些我将如何做的事情:
class ScenarioPage
constructor: ->
format: (icon) ->
originalOption = icon.element
'<i class="fa ' + $(originalOption).data('icon') + '"></i> ' + icon.text
enabledSelect2: () ->
$('.select2-fountawesome-icon').select2
width: '100%'
formatResult: format
$(document).ready ->
scenario = new ScenarioPage()
scenario.enabledSelect2()
现在您只需要在需要时调用格式化功能。 如果你有什么不清楚的地方,请不要犹豫。
此致