【问题标题】:Ember .observe() returns callback twice when used with query-paramsEmber .observe() 与查询参数一起使用时返回两次回调
【发布时间】:2014-07-12 11:10:57
【问题描述】:

http://jsbin.com/vowup/2

如果我点击更改为随机,程序会登录控制台两次。

由于某些奇怪的原因,将修订变量设置为字符串时可以正常工作,但会为数字或任何其他类型的变量记录两次

【问题讨论】:

    标签: ember.js observers query-parameters


    【解决方案1】:

    把你的代码改成这个,答案就清楚了:

      toggleHistory: (function() {
        console.log(this.get("revision"));
      }).observes("revision")
    

    你会看到如下输出:

    0.7038348997011781
    "0.7038348997011781"
    

    您的数字被强制转换为字符串。这是由这一行引起的:

    queryParams: ["revision"]
    

    查询系统正在侦听更改并将每个新值转换为字符串,因此它可以作为 URL 的一部分出现。这就是为什么您会收到两个更改的事件。

    【讨论】:

    • 这不是bug吗?查询系统可以将其转换为字符串,写入URL,但不会覆盖原来的
    • 实施细节。在大多数情况下,更改后的处理程序会继续相互调用,直到它们都“同意”新值,从而导致连锁反应停止。我认为它的一部分同意一个值,但私下保留另一个值,这将是微不足道的。
    • 这帮助我解决了液火模式的问题,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-29
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    • 1970-01-01
    相关资源
    最近更新 更多