0

phonegapアプリケーション内で使用したい本当に基本的なEmberJSアプリケーションを開始しました。次のコードはFF4でうまく機能しますが、ChromeとSafariではハンドルバーセクションのビューが更新されません。

メイン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>
4

1 に答える 1

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()オブジェクトを初期化していないようです。

于 2012-08-02T14:34:27.390 に答える