我们目前正在评估 ember.js 以在javascript windows (8) 商店应用程序中使用。应用程序本身并没有太大的兴趣。我们面临的问题与处理被注入 DOM 的动态内容时应用的限制有关。Windows 商店应用程序在“本地”上下文中运行,即通常如何构建 Windows 商店应用程序的方式。在本地上下文中,Windows 商店应用程序的 html“浏览器主机”以相当受限的模式工作。例如,如果没有由 Microsoft 提供的“代理”函数 ( MSApp.execUnsafeLocalFunction ) 明确封装,则设置 innerHTML、outerHTML 或附加内容包含脚本元素都将被阻止。
示例:Ember.View appendTo 不能开箱即用。为了使其工作,该函数必须使用 MSApp.execUnsafeLocalFunction 代理函数封装对 appendTo 的 jQuery 调用。
原文:(在 Ember.View 中)
appendTo: function(target) {
// Schedule the DOM element to be created and appended to the given
// element after bindings have synchronized.
this._insertElementLater(function() {
Ember.assert("You cannot append to an existing Ember.View. Consider using Ember.ContainerView instead.", !Ember.$(target).is('.ember-view') && !Ember.$(target).parents().is ('.ember-view'));
this.$().appendTo(target);
});
return this;
},
修改为与 Windows 应用商店应用程序一起使用
appendTo: function(target) {
// Schedule the DOM element to be created and appended to the given
// element after bindings have synchronized.
this._insertElementLater(function() {
Ember.assert("You cannot append to an existing Ember.View. Consider using Ember.ContainerView instead.", !Ember.$(target).is('.ember-view') && !Ember.$(target).parents().is ('.ember-view'));
var self = this;
MSApp.execUnsafeLocalFunction(function () {
self.$().appendTo(target);
});
});
return this;
},
是否有任何计划支持 Windows 商店应用程序,或者是否有任何建议如何解决这个问题而无需全部修补 ember 代码?我确实搜索了很多,但似乎没有多少人试图让 ember.js 在 javascript Windows 商店应用程序中工作。我真的很想用它作为我们的“核心”JavaScript 框架来构建混合/跨平台的 JavaScript 应用程序。
我使用的库
- ember-1.0.0-rc.3
- 车把-1.0.0-rc.3
- jquery-2.0.0(假设已准备好用于 Windows 8 应用程序)
- jquery-ui-1.10.3
微软在这里解释了上面提到的限制:
非常感谢任何回应和想法......任何帮助将不胜感激!
注意:发布到 ember 讨论论坛:这里