【问题标题】:HotTowel Angular Breeze config not definedHotTowel Angular Breeze 配置未定义
【发布时间】:2014-03-02 05:29:32
【问题描述】:

我正在关注 John Papa 的 HotTowel Angular 课程和最新的 Hot Towel 版本 2.1.0,但是在执行查询时出现错误“未定义配置”。

 function getServerPartials() {
        var orderBy = 'Activated, Label, Serial, IsActive';
        var servers;

        return EntityQuery.from('Servers')
            .select('ServerId, Name, Serial, Activated, IsActive')
            .orderBy(orderBy)
            .toType('Server')
            .using(manager).execute()
            .to$q(querySucceeded, _queryFailed);

        function querySucceeded(data) {
            servers = data.results;
            log('Retrieved [Server Partials] from remote data source', servers.length, true);
            return servers;
        }

    }
    function _queryFailed(error) {
        var msg = config.appErrorPrefix + 'Error retreiving data.' + error.message;
        logError(msg, error);
        throw error;
    }

app.run(['$route','config.breeze',  function ($route) {
    // Include $route to kick start the router.       

}]);  

错误与 .to$q(querySucceeded, _queryFailed);我是否必须在应用部分添加一些内容,因为我知道不再需要或不存在微风.to$q 库。

【问题讨论】:

  • 尝试单击 Chrome 开发工具中的错误,以便它跳转到它的来源行号。在问题中包含该行的内容。
  • 这是我在 chrome 中收到的消息:

标签: angularjs undefined config breeze hottowel


【解决方案1】:

您的getServerPartials 函数使用config,这是应用程序中的一个角度服务。您需要在您的工厂、控制器、指令等中注入配置。否则你会得到这个问题。我看不到函数包含在什么类型的对象中。换句话说......如果它包装在工厂中,则注入配置。

【讨论】:

  • 感谢约翰似乎已经解决了这个问题。 angular.module('app').factory(serviceId, ['config','common','entityManagerFactory', datacontext]);函数 datacontext(config, common, emFactory) { –
【解决方案2】:

问题出在这一行:

app.run(['$route','config.breeze',  function ($route) {
// Include $route to kick start the router.       
}]);  

未定义配置。你必须定义它。它还需要有一个属性,“breeze”,大概有一些你教程告诉你如何连接的非常具体的东西。

【讨论】:

  • 不幸的是,我正在关注的教程没有使用 config.breeze 参数。本教程基于 HotTowel 的早期版本,它使用了不再需要的 Bread.to.$q.js 库。到目前为止,我还没有找到更新的示例。
  • 好吧,试试看:` app.run(['$route', function ($route) { // 包含 $route 来启动路由器。}]);`
  • 删除 config.breeze 后 Q 未定义。您是否缺少 Q.js?...我希望 config.breeze 是必需的,因为它是您安装 HotTowel 时的默认设置。
  • config.breeze 是一个为 Angular 设置微风的工厂(包括一些 q 的东西)。它位于 HotTowel 应用程序根目录中名为 config.breeze.js 的文件中。
  • 这是 Breeze 网站上的注释,解释如何使用 config.breeze:breezejs.com/documentation/breeze-angular-service
【解决方案3】:

如果您遵循 John 的 Pluralsight 示例,则您的 app.run 可能位于错误的位置。看起来你的 datacontext.js 中有它。在 PS 课程中,John 在 app.js 的末尾这样称呼它:(config.js 在第 1 部分或第 2 部分版本中都没有微风属性)

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

【讨论】:

  • 在上面的课程中是正确的,为简洁起见,我将 app.run 代码包含在同一代码段中,但我确实在 app.js 文件中有该部分。它一定很简单,但我还没有找到一个使用 config.breeze 代替微风.to.$q.js 的例子。在更新的 HotTowel 版本中引入了 config.breeze 参数。
  • 我想我还没有用最新的热毛巾从头开始一个应用程序。但是 Hot Towel 不会创建配置文件吗?也许它不会覆盖现有的配置,如果你已经有一个,这就是你没有它的原因。我会尝试用热毛巾启动一个新应用程序并查看 config.js 的样子。将对此感兴趣。
  • 我正在查看以前的 config.js 和当前的,我认为它根本没有改变。 John Papa 引入了这个新文件 config.breeze,它清理了 $q 的东西。还查看了微风文档,他们可能很快就会转向带有角度的微风服务类型配置,这将使更新 Hot Towel 更容易。 (breezejs.com/documentation/breeze-labs/breezeangularqjs) 希望 John 可以评论使用 config.breeze 需要进行哪些更改,我已经从头开始在两个单独的项目中重现了该错误。
猜你喜欢
  • 1970-01-01
  • 2023-04-03
  • 1970-01-01
  • 2013-11-17
  • 1970-01-01
  • 2019-04-30
  • 1970-01-01
  • 2014-02-23
  • 2015-05-08
相关资源
最近更新 更多