我有一个非常基本的EmberJS应用程序,我想在phonegap应用程序中使用。以下代码在FF 4中运行良好,但在Chrome和Safari中,视图不会在把手部分更新。
Main JS文件包含以下代码。
(function(window) {
function Main() {
MainApp = Ember.Application.create({
appname: "My App",
ready: function() {
console.log("hello from ember");
app.initialize();
app.deviceready();
}
});
}
window.Main = Main;
}(window))
我发现如果我删除了自执行功能,它将在webkit中呈现得很好
MainApp = Ember.Application.create({
appname: "My App",
ready: function() {
console.log("hello from ember");
app.initialize();
app.deviceready();
}
});
所以我想真正的问题是为什么将Ember.Application.create()包装到Main()函数会导致webkit中的这个问题?
在我的index.html文件中,我有以下脚本块来执行main.js
<script type="text/javascript">
function init() {
var mainApp = new Main();
}
</script>
然后我的把手代码就是这样。
<script type="text/x-handlebars">
<h1>hello from {{MainApp.appname}}</h1>
</script>
答案 0 :(得分:1)
解决方案是采取
(function(window) {
function Main() {
MainApp = Ember.Application.create({
appname: "My App",
ready: function() {
console.log("hello from ember");
app.initialize();
app.deviceready();
}
});
}
window.Main = Main;
}(window))
并制作
(function(window) {
MainApp = Ember.Application.create({
appname: "My App",
ready: function() {
console.log("hello from ember");
app.initialize();
app.deviceready();
}
});
})(window)
这仍然会根据需要将MainApp分配给窗口/全局上下文,但会删除未初始化函数的依赖关系。我不确定你是如何在HTML中调用init()
函数的,但似乎从未真正为你初始化new Main()
对象。