1

EmberJS に問題があり、理解できません

問題は jsfiddle で見つかる可能性があります: http://jsfiddle.net/wLKKQ/

JS:

var fileUploader = [] || fileUploader;
fileUploader.app = Em.Application.create();

fileUploader.app.userDetailsView = Em.View.create({
    clientIP: null
});​

HTML:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <script type="text/x-handlebars">
        {{#view fileUploader.app.userDetailsView}}
            <h2>Hello Guest, your IP is: {{clientIP}}</h2>
        {{/view}}
    </script> 
    <script>
        $(function () {
            fileUploader.app.userDetailsView.set('clientIP', '::1');
        });
    </script>
</body>
</html>

次のエラーが表示されます。

キャッチされないエラー: アサーションに失敗しました: パス 'fileUploader.app.userDetailsView' でビューが見つかりません

4

1 に答える 1

2

コードにいくつかの問題があります。

  • Ember.Application は大文字の名前空間にある必要があります ( Emberist ブログを参照)。
  • インスタンスではなく、ビュー クラスを #view ヘルパーに渡す必要があります (したがってEmber.View.createEmber.View.extend.
  • 現在はクラスであるため、を編集するスクリプトはclientIP機能しません。Ember.View メソッドFileUploader.app.userDetailsViewでも同じことができます。didInsertElement
  • テンプレートでは、View Context Changesview.clientIPに従って、を指定する必要があります。

、この JSFiddle 作業:

FileUploader = [] || fileUploader;
FileUploader.app = Em.Application.create();
FileUploader.app.userDetailsView = Em.View.extend({
    clientIP: null,

    didInsertElement: function() {
        this.set("clientIP", "::1");
    }
});​

HTML:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <script type="text/x-handlebars">
      {{#view FileUploader.app.userDetailsView}}
         <h2>Hello Guest, your IP is: {{view.clientIP}}</h2>
      {{/view}}
    </script> 
</body>
</html>
于 2012-08-27T14:20:57.413 に答える