如何使用underscore.loop

时间:2012-01-31 03:26:42

标签: javascript backbone.js underscore.js

对于我正在构建的Web应用程序,我真的很想通过对象树进行递归并动态修改节点。有一个underscore mixin承诺,underscore.loop,但我似乎无法将其拉入我的页面。我收到一个脚本错误:

  

未捕获的TypeError:无法调用未定义的方法'mixin'

位于line 33 of the tool

现在,在underscore.loop.jsbackbone.js之后,underscore-data.js被拉入。

  1. 这两个工具都使用Underscore和
  2. 尝试underscore.loop后,Underscore绝对可用。

             
  3. 那么为什么不能underscore.loop.js看到下划线。它使用与underscore-data.js几乎相同的作用域和初始化语义。任何人都可以对此有所了解吗?

1 个答案:

答案 0 :(得分:1)

在underscore.loop和you'll see this的源代码中稍微高一点:

var RecursiveCall, flatStackLoop, _;
var __slice = Array.prototype.slice;
try {
  _ = require('underscore');
} catch (_e) {}

注意var ... _;以及如何初始化_。因此underscore.loop.js正在尝试确保加载underscore.js并且要使用_的本地版本。 require is a node.js-ism所以你没有在客户端世界中拥有它,并且在_中留下了未定义的值。您可以抓住client-side library that supplies a node.js compatible require

或修改underscore.loop.js的副本,使其不包含var _;声明或try块。或者,您可以通过以下方式实现自己的require实现:

function require(what) {
    return what == 'underscore' ? window._ : null;
}

甚至:

function require(ignored) { return window._ }

并在requireunderscore.js之间加载underscore.loop.js黑客。