我的Breeze脚本上已弃用方法的版本问题

Leo*_*ato 8 angularjs breeze q hottowel

当试图在John Papa Pluralsight Video的教程中实现会话部分时.我收到以下错误:

未捕获的TypeError:对象#没有方法'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);

    }]);        
})();
Run Code Online (Sandbox Code Playgroud)

重要的是要知道我正在处理的微风版本比原始视频上使用的版本更新.

我在微风网站上搜索了一些答案,我发现了这个:

$ q已被弃用.它被Breeze Angular Service取代.

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

更新:

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

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

Joh*_*apa 6

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

具体来自帖子底部的代码:

迁移是非常轻松的.

  1. 从项目中删除breeze.angular.q.js脚本.
  2. 如果您使用NuGet,请卸载-Breeze.Angular.Q.
  3. 如上所述安装breeze.angular.js.
  4. 更新index.html,将breeze.angular.q.js更改为breeze.angular.js.
  5. 更新您的应用模块以依赖"breeze.angular".
  6. 在代码中找到一个名为"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);
}]);
Run Code Online (Sandbox Code Playgroud)

对此:

var app = angular.module('app', [
   // ... other dependencies ...
   'breeze.angular'
]);

app.run(['breeze', function () { }]);
Run Code Online (Sandbox Code Playgroud)

您还应该追踪并消除配置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();
}
Run Code Online (Sandbox Code Playgroud)

对此:

function configBreeze() {
    breeze.NamingConvention.camelCase.setAsDefault();
Run Code Online (Sandbox Code Playgroud)

  • 这次真是万分感谢!在跟随您的视频时,我能够解决相同的错误. (2认同)