【问题标题】:Ember actions not firing after moving to ember-cli移至 ember-cli 后,Ember 操作未触发
【发布时间】:2014-06-21 18:47:48
【问题描述】:

我已经开始将我的应用程序从脚本标签和单个 .js 文件中的所有内容移植到 ember-cli。我的路线、模型和渲染都可以正常工作,但由于某种原因,没有触发任何控制器操作。没有任何。任何地方。这个应用程序运行良好,直到我将所有内容都拉到他们自己的文件中以符合 ember-cli 目录/模块结构。有什么想法可能导致这种情况吗?

渲染的 DOM 元素都按预期在其上具有“data-ember-action”,但单击它们不会执行任何操作,并且在控制台上使用 jQuery 显式调用 click() 也不会。控制台上没有任何类型的输出,这通常发生在发生“未找到操作”错误时,并且我的代码都没有被命中。

【问题讨论】:

    标签: ember.js ember-cli


    【解决方案1】:

    它可能没有使用您的控制器,它可能正在构建一个假人。您的命名架构可能与 ember-cli 所期望的不匹配。

    您可以通过在控制器中扔一个属性来相当快速地证明这一点

    var IndexController = Ember.ObjectController.extend({
      foo: 'bar'
    });
    
    export default IndexRoute;
    

    然后在模板中引用该属性

    I'm using the controller and it's property is {{foo}}
    

    您还可以在 ember chrome 扩展中看到这一点,它显示正在使用的控制器类型。

    【讨论】:

    • 不,我已经完成了这个测试。它连接到正确的控制器,只是从来没有向它发送任何操作。
    • 笨蛋,我们总是希望得到简单的答案,你介意发布一些相关领域的代码吗?
    • 这是一个简单的答案;愚蠢和愚蠢的运气。现在发布我的答案,这样我就可以永远在 StackOverflow 上感到羞耻。
    【解决方案2】:

    这只是巨大的愚蠢和运气。在我的原始应用程序中,我像这样初始化了 Ember 应用程序:

    Ember.Application.extend({
        customEvents: {
            tap: "click",
            click: null //Prevent tap from registering as two clicks
        }
    });
    

    显然,这完全没有任何作用,因为我从不存储和重用该调用的结果。在 ember-cli 应用中:

    var App = Ember.Application.extend({
      modulePrefix: 'my-app', // TODO: loaded via config
      Resolver: Resolver,
      customEvents: {
        tap: "click",
        click: null //Prevent tap from registering as two clicks
      }
    });
    

    这一次customEvents 真正占据了上风,打破了一切。

    【讨论】:

    • 哈哈哈,很好的发现,我喜欢在学习东西时发现旧代码的残余。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多