首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么不能在Ember CLI中的某些函数中定义ic?

为什么不能在Ember CLI中的某些函数中定义ic?
EN

Stack Overflow用户
提问于 2014-08-04 03:55:44
回答 1查看 1.4K关注 0票数 3

请原谅我的无知,但我不能让ic在某些函数中工作。

具体来说,我想要一个像这样的测试,但是对于Ember :例如http://coderberry.herokuapp.com/testing-your-ember-application#30

我可以在Ember.Object.Extend内部以及函数和对象定义之外调用ajax,但不能在模块、测试或Ember.Routing的模型函数中调用ajax。

我是误解了什么,还是在我的应用中出现了配置错误?

我想出了在功能范围内我可以做的事情:

代码语言:javascript
复制
ajax = require('ic-ajax')['default'];
defineFixture = require('ic-ajax')['defineFixture'];

但我很肯定,文件顶部的import应该能工作。

我在Ember 0.40.0 (在我现有的应用程序和一个新的应用程序中)上体验到了这一点。请参阅下面的更多细节,在哪里我发现它没有定义。在函数之外设置var ajax = icAjaxRaw也不起作用。我有点松懈,所以你能在这方面提供的任何帮助都是很棒的。

用户-test.js:

代码语言:javascript
复制
import ajax from 'ic-ajax';
import { raw as icAjaxRaw } from 'ic-ajax';
import { defineFixture as icAjaxDefineFixture } from 'ic-ajax';

debugger;

代码语言:javascript
复制
module('Users', {
  setup: function() {

    App = startApp();
    debugger;

icAjaxDefineFixture -->未定义

代码语言:javascript
复制
  },
  teardown: function() {
    Ember.run(App, App.destroy);
  }
});

test("Sign in", function() {

icAjaxDefineFixture -->未定义

代码语言:javascript
复制
  expect(1);
  visit('/users/sign-in').then(function() {
    equal(find('form').length, 1, "Sign in page contains a form");
  });
});

Brocfile.js (我认为这些并不是真正需要的新成员-cli-ic-ajax插件):

代码语言:javascript
复制
app.import('vendor/ic-ajax/dist/named-amd/main.js', {
  exports: {
    'ic-ajax': [
      'default',
      'defineFixture',
      'lookupFixture',
      'raw',
      'request',
    ]
  }
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-22 00:27:13

也有同样的问题。原来这是一个Chrome调试器优化问题,请查看这篇博文http://johnkpaul.com/blog/2013/04/03/javascript-debugger-surprises/

在调试过程中,如果您尝试使用控制台中的闭包作用域中的变量,而这个变量实际上并没有在源代码中使用,那么您将对ReferenceErrors感到惊讶。这是因为JavaScript调试器优化了您的代码,如果它们未使用,它们将从函数的词汇环境中删除变量。

为了在调试器中发挥作用,我刚刚在闭包中输入了ajax;并神奇地出现了变量。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25111556

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档