BreezeJS RequireJS支持不稳定(淘汰示例)

时间:2014-06-28 15:50:03

标签: javascript requirejs breeze

当我试图用breeze和requirejs编译我的项目时,我遇到了多个问题。展开这个,我尝试用Knockout RequireJS example重新开始。 在我安装MVS2013Pro之后,我能够运行该项目,但并非没有问题:

  1. window.breeze已定义,因此已泄露到全局范围(此 不应该发生在RequireJS上)

  2. 点击F5刷新会因

    而崩溃
    • 未捕捉错误:无法找到微风和/或Q(微风豁免)
    • 未捕获的TypeError:undefined不是函数(breeze dataservice)
  3. 有了这些错误,我甚至都没有尝试建立我的grunt requirejs(r优化器)任务。因为这些是我问题的根源。

    注意:我不是在寻找淘汰赛解决方案,我的筹码实际上是:MongoDataService + Breeze + SaveQueueing + RequireJS + AngularJS + Socket.IO + Cordova

1 个答案:

答案 0 :(得分:0)

window.breeze

你是对的,breeze breeze.debug.js 的底部隐藏回浏览器:

if (global.window) {
    global.window.breeze = breeze;
}

我们不知道为什么要把它放在代码库中。没有人记得。最后,就像它一样,Breeze本身并不需要它。

我在初步测试中对此进行了评论,这似乎可以解决问题。 Todo-KO-Require 示例中的 window.breeze 变为undefined;它在未使用 require.js 的样本中保持定义(正确)。

我们不认为这对任何人来说都是一个突破性的变化......并且补救措施很简单:在应用程序的顶部自己定义。

我们可能会为下一个版本删除这些行,除非我们发现了其他原因。

F5失败?

我根本无法重复这一点。我怀疑你正在努力编写一个使用 breeze.savequeuing.js 的Angular应用程序,将你的发现与无意中在全局命名空间中的breeze混为一谈。

为什么我这么想?因为在尝试在v.1.0的注释(第14行)中使用明确禁止的Angular应用程序中使用 breeze.savequeuing.js 时,会出现您所描述的错误。 4:

  

取决于Breeze(它补丁)和Q.js(不适用于Angular ......)

毫无疑问,您从所需的库中省略了 Q.js ,这一切都从那里转到了蛋羹。

我个人对" 保存用户更改任何内容"使用存储排队成为必要的用户体验。我写的很难过。但它就是。

显然依赖于 Q.js 是因为它不适用于Angular应用程序。现在很容易让它成为Angular-ready,因为我们最近(安静地)使Breeze用于承诺的组件可以访问

breeze.Q // returns the promises component currently used by Breeze

因此,您可以将第104行的Q引用更改为

    var deferredSave = breeze.Q.defer();

这在使用breeze v.1.4.14 及更高版本时应该有效。我还没有完全测试过它。

这种变化(或类似的东西)可能会进入 breeze.savequeuing.js v.1.1.0 (因为我刚刚推出了非发行版)版本的。)