2012-08-02 70 views
0

我有一個非常基本的EmberJS應用程序,我想在phonegap應用程序中使用。以下代碼在FF 4中效果很好,但在Chrome和Safari中,視圖在句柄部分中未更新。爲什麼EmberJS不能在webkit瀏覽器的HTML/Handlebars中渲染

主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> 

回答

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()對象。