【问题标题】:Breeze Angular Service Not Configuring Breeze to Angular PromisesBreeze Angular 服务未将 Breeze 配置为 Angular Promise
【发布时间】:2015-04-02 18:51:20
【问题描述】:

我无法让 Breeze Angular 服务 (http://www.getbreezenow.com/documentation/breeze-angular) 将 Breeze 配置为使用 Angular Promise,即,我永远无法让微风.bridge.angular.js 中的 useNgPromises() 函数将消息记录到控制台和因此我假设 Breeze 从未配置为使用 Angular 承诺。

我的JS文件加载如下:

  1. angular.js (v 1.3.14)
  2. angular-route.js (v.1.3.14)
  3. q.js (v 1.1.2) - 之所以在这里,是因为如果我忽略它,我会不断收到 Q 未定义的错误。如果我改用 Angular Promise,我不知道是否有必要加载 Q.js。
  4. breeze.js (v 1.5.3)
  5. breeze.bridge.angular.js (v 1.1.0)
  6. app.js 和其他应用特定的 JS 文件

到目前为止,这满足了 Breeze 页面“安装它”部分的步骤 #1 和 #2。

根据 Breeze 页面上的第 3 步和第 4 步以及微风.bridge.angular.js 中的 cmets,这就是我的 app.js 的样子:

    window.myApp = angular.module("myApp", [
        "breeze.angular"
    ])
    .value("breeze", window.breeze)
    .config(["$routeProvider", function ($routeProvider) {
        // Routing code
    }])
    .run(['breeze', function (breeze) {}]);

据我所知,该代码与该 Breeze 页面上的示例 #1 代码匹配,并满足该 Breeze 页面上的步骤 #3 和 #4。

然后我有一些使用控制器和 datacontext JS 文件的基本视图,后者将微风对象作为依赖项注入。为了测试 Breeze 是否真的在执行配置以使用 Angular Promise,我编辑了 browse.bridge.angular.js 文件,以便将以下语句作为第一行包含在 useNgPromises() 函数中:

    console.log("Using Angular promises!");

当我运行我的应用程序时,我从来没有在控制台中看到它,所以我认为配置没有发生。

我在设置中做错了吗?如果有,是什么?

【问题讨论】:

    标签: angularjs breeze


    【解决方案1】:

    你绝对不需要 Q.js;您看到与该库相关的错误这一事实表明存在配置错误。

    我想你在添加.value("breeze", window.breeze) 时发现了问题。

    那一行清除了'breeze.angular'模块建立的breeze服务的定义(在breeze.bridge.angular.js中定义),从而阻止了breeze的配置对于$http$q。如果没有该配置,Breeze 会在其他地方寻找 Promise 实现......因此抱怨缺少 Q.js。所以......是的......那条线是一场灾难。

    想知道你从哪里得到了这条线的想法。感谢您参考 Microsoft ASP Breeze/Angular 模板文档。哇,那是旧的(2013)。我会杀了它......以及其他已失效的 Visual Studio Breeze 模板......如果可以的话(也许我可以)。我以为我们让他们很难找到。看起来你找到了他们。怎么样?

    这当然不是我们这些天教 Breeze + Angular 的方式。

    "Todo Angular" sample 是一个更好的指南(即使它已经一岁了)。

    【讨论】:

    • 谢谢沃德!我将参考该示例而不是继续前进。你对不需要 Q.js 是正确的。在我删除了麻烦的代码行之后,我也停止了包含 Q.js 并且没有收到任何错误。关于 ASP.NET Breeze/Angular 模板,并不难找到。它与主要 ASP.NET SPA 站点 (asp.net/single-page-application) 上的各种其他模板一起提供。不幸的是,它们包含的所有其他模板也都是旧的,日期为 2013 年。
    • 我能说什么?我希望他们关闭那个网站。
    • 请您将我的答案标记为 THE 答案,这样没人会认为存在未解决的问题吗?谢谢。
    【解决方案2】:

    我通过注释掉该行解决了这个问题:

        .value("breeze", window.breeze)
    

    我在此处的“依赖注入”部分包含该行:http://www.getbreezenow.com/ng-spa-template#module 以及此处的“值配方”部分:https://docs.angularjs.org/guide/providers,但显然它不能很好地与 Breeze Angular 服务配合使用。

    我不确定为什么会出现这种情况,但我最好的猜测是问题是由 Angular 值不可配置引起的,根据以下解释:https://gist.github.com/demisx/9605099,我假设 Breeze Angular 服务需要 Breeze 对象是可配置的,因此不应通过值配方将其作为应用程序的依赖项注入。

    我还应该注意,在删除那行麻烦的代码后,我不再收到指示需要 Q.js 的错误,因为 Breeze Angular 服务成功地将 Breeze 配置为使用 Angular 的 $q。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-06
      • 1970-01-01
      • 1970-01-01
      • 2013-08-14
      • 2015-01-14
      • 1970-01-01
      相关资源
      最近更新 更多