【发布时间】:2014-09-24 21:36:02
【问题描述】:
在尝试创建使用 requirejs 模块的聚合物元素时,我遇到了阻塞 issue。我知道聚合物不是为与requirejs一起工作而设计的,但目前它是我唯一的选择。
搜索答案我找到了两个解决方案:
- 不要使用 requirejs 并使您的模块与 HTML 导入兼容。
- 将
Polymer()调用放入requirejs 回调中,如here 所述
由于我必须使用 require,至少目前,我选择了解决方案 2。然而,事实证明该解决方案导致元素注册和incorrect data binding prior to Polymer upgrading the element的异步延迟。
为了深入研究这个问题,我开始破解未记录的 Polymer 内部结构,目的是完全停止 Polymer,直到 requirejs 完成它的工作。这是我想出的:
Polymer.require = function(tag, deps, func) {
var stopper = {}
Polymer.queue.wait(stopper);
require(deps, function() {
delete stopper.__queue;
Polymer.queue.check();
Polymer(tag, func.apply(this, arguments));
});
};
我知道这是非常错误的。有没有更好的解决方案?
【问题讨论】:
标签: polymer