我有一个rails 4.1.x项目,其中包含以下application.js
文件:
//= require jquery
//= require jquery_ujs
//= require jquery.ui.all
//= require turbolinks
//= require showdown
//= require underscore
//= require underscore.string/underscore.string
//= require selectize.js/js/selectize
//= require jquery-bootpag/jquery.bootpag
//= require react
//=require_tree ./helpers
//= require_tree ./react_mixins
//= require_tree ./react_components
//= require backbone
//= require aisis_writer
//= require_tree ./models
//= require_tree ./collections
//= require_tree ./views
//= require_tree ./routers
//= require_tree .
//= require twbs/bootstrap
//= require chosen/chosen.jquery.min
一切都装鳍。现在我可以做 - 从Underscore js库:
var moe = {name: 'moe'};
moe === _.identity(moe);
它有效,但如果我这样做 - 来自Underscore.string库:
_.levenshtein('kitten', 'kittah')
我得到undefined function
。我正在阅读:this part of the readme它规定了如何使用下划线,但我不知道我是否必须用铁轨走得那么远。我也在查看this part of the source code,它定义了_s
或者它与下划线集成。
考虑到underscore.string是在下划线和所有常规下划线函数工作后加载的 - 可以肯定它存在。那是怎么回事? Bot库已正确加载,当我尝试使用underscore.string函数时,它们除了undefined function
之外没有控制台错误。
答案 0 :(得分:1)
正如自述文件所述,如果您想使用_
对象you must mix them in中的Underscore.string函数。在尝试使用_.levenshtein
之前添加以下行:
_.mixin(_.string.exports());
或者您可以致电_.str.levenshtein
。