angularjs - 我的 Breeze 脚本中不推荐使用的方法的版本问题

标签 angularjs breeze q hottowel

在尝试实现 John Papa Pluralsight Video 教程中的 session 部分时。
我收到以下错误:

Uncaught TypeError: Object # has no method 'extendQ'


(function () {
    'use strict';

    var app = angular.module('app', [
        // Angular modules 
        'ngAnimate',        // animations
        'ngRoute',          // routing
        'ngSanitize',       // sanitizes html bindings (ex: sidebar.js)

        // Custom modules 
        'common',           // common functions, logger, spinner
        'common.bootstrap', // bootstrap dialog wrapper functions

        // 3rd Party Modules
        'ui.bootstrap',      // ui-bootstrap (ex: carousel, pagination, dialog)
        //'breeze.angular.q'
    ]);

    // Handle routing errors and success events
    app.run(['$route', '$rootScope', '$q', function ($route, $rootScope, $q) {
        // Include $route to kick start the router.
        breeze.core.extendQ($rootScope, $q);
        //use$q($rootScope,$q);

    }]);        
})();

重要的是要知道我正在制作的 Breeze 版本比原始视频中使用的版本更新。

我在 breeze website 上搜索一些答案我发现了这个:

The to$q has been deprecated. It is superseded by the Breeze Angular Service.



但是我没有使它在教程示例中起作用。如何用新的实现更改已弃用的实现?

更新:

这个链接帮助解决了这个问题:

http://www.breezejs.com/documentation/breeze-angular-service

最佳答案

Breeze 库已更新,答案在此链接上:http://www.breezejs.com/documentation/breeze-angular-service

特别是帖子底部的这段代码:

迁移非常轻松。

  • 从您的项目中删除 Breeze .angular.q.js 脚本。
  • 如果您使用 NuGet,请卸载 Breeze.Angular.Q。
  • 按照上面的说明安装 Breeze .angular.js。
  • 更新你的 index.html,将breath.angular.q.js 更改为breath.angular.js。
  • 更新您的应用模块以依赖“breeze.angular”。
  • 在代码中找到调用“use$q”的地方,并将其替换为“breeze”依赖项。

  • 例如,您可能会从此开始:
    var app = angular.module('app', [
       // ... other dependencies ...
       'breeze.angular.q' // tells breeze to use $q instead of Q.js
    ]);
    
    app.run(['$q','use$q', function ($q, use$q) {
           use$q($q);
    }]);
    

    对此:
    var app = angular.module('app', [
       // ... other dependencies ...
       'breeze.angular'
    ]);
    
    app.run(['breeze', function () { }]);
    

    您还应该追踪并消除将 Breeze 配置为使用“backingStore”模型库适配器和 $http 的代码。例如,您可以从此开始:
    function configBreeze($q, $http, use$q) {
        // use $q for promises
        use$q($q);
    
        // use the current module's $http for ajax calls
        var ajax = breeze.config.initializeAdapterInstance('ajax', 'angular');
        ajax.setHttp($http);
    
        // the native Breeze 'backingStore' works for Angular
        breeze.config.initializeAdapterInstance('modelLibrary', 'backingStore', true);
    
        breeze.NamingConvention.camelCase.setAsDefault();
    }
    

    对此:
    function configBreeze() {
        breeze.NamingConvention.camelCase.setAsDefault();
    

    关于angularjs - 我的 Breeze 脚本中不推荐使用的方法的版本问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22118797/

    相关文章:

    javascript - Breeze.js + Knockout.js 教程

    javascript - 使用 DateTimeOffset 创建 Breeze.js 查询失败

    javascript - 为什么我的 Angular 范围变量未定义?

    javascript - Angular,停止渲染直到获得异步数据

    validation - BreezeJS 不会自动解析使用 KnockoutJS 绑定(bind)保存为字符串的数字

    javascript - 如何将参数传递给 Node A 库的 (nodeify) promise 处理程序

    javascript - CoffeeScript/JavaScript - promise 与 Source Maps 兼容?

    javascript - Q.js 并行映射

    javascript - 仅重新加载 $state.go 的特定 Controller

    angularjs - 在同一项目中同时使用 Backbone.js 和 Angular.js。其可行性和实际意义是什么?