Emberjs Hashbang is getting Uncaught ReferenceError: set is not defined

Emberjs Hashbang is getting Uncaught ReferenceError: set is not defined

我通过 ember-cli 实现了 ember.js hashbang。因此,在我的 app/initializer 文件夹中,我有一个 application.js,其中包含上一个问题的解决方案: Hashbang URLs using Ember.js

当我 运行 代码时它工作得很好但是当我转到另一条路线时我得到:

Uncaught ReferenceError: set is not defined

但是当我刷新页面时它加载得很好,直到我尝试转到另一条路线。

所以

example.com/#!/

将加载

example.com/#!/nextRoute

我得到了转换 #1:转换完成。但页面上没有呈现任何内容

听到问题是 set 未定义,您可能并不感到惊讶。

在您链接到的 HashBangLocation 的原始实现中,顶部有一行

var get = Ember.get, set = Ember.set;

在你重新实现的初始化里面,我没有看到这一行。 JSHint 可能会为您发现此错误。如果您查看转译后的代码,看不到 set 的定义。

要解决此问题,请将 var get = Ember.get, set = Ember.set 行重新添加到您的代码中,或改用 self.set('lastSetURL', null);

所以如果没有 setget 是如何工作的?原来 Ember 中有一个错误。在源代码的某一时刻,get 在全局范围内声明。