2

今まで正常に動作していた ember.js プロトタイプがあります。私の最後の展開以来、一貫して Uncaught TypeError: Cannot read property 'hash' of undefined というエラーが発生しています。

app.js ファイル

// Application
Welcome = Ember.Application.create({
    ready : function() {
    }
});

// Model
Welcome.Ticket = Ember.Object.extend({
    id : null,
    buyerPartyId : null,
    name : null,
    priority : null,
    description : null,
    comment : null
}); 

// Controller
Welcome.ticketsController = Ember.ArrayController.create({
    content : [],

    loadTickets : function() {
        var self = this;
        $.getJSON('url here', function(
                data) {
            for ( var i = 0; i < data.serviceRequest.length; i++) {
                self.pushObject(Welcome.Ticket.create(data.serviceRequest[i]));
            }
        });
    }
});

索引.html

<!doctype html>
<html>
<head>
<title>Ticket List</title>
<link rel="stylesheet" href="css/normalize.css">
<script
    src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script src="js/libs/ember-0.9.5.min.js"></script>
<script src="js/app.js"></script>
</head>
<body>
    <h1>Ticket List</h1>
    <script type="text/x-handlebars">
    {{#view Ember.Button target="Welcome.ticketsController" action="loadTickets"}}
        Load Tickets
    {{/view}}

    {{#each contentBinding="Welcome.ticketsController" tagName="ul"}}
        <b>{{content.id}}</b> - {{content.buyerPartyId}}, <i>{{content.name}}</i>
    {{/each}}
</script>
</body>
</html>

私は単純なものを見落としていると確信しています!! 任意の提案をいただければ幸いです!!

Chrome 開発コンソールからのエラー スタックを次に示します。

Uncaught TypeError: Cannot read property 'hash' of undefined ember-0.9.5.min.js:13
(anonymous function) ember-0.9.5.min.js:13
(anonymous function)
b.VM.template ember-0.9.5.min.js:9
Ember.View.Ember.Object.extend.render ember-0.9.5.min.js:12
Ember.View.Ember.Object.extend.renderToBuffer ember-0.9.5.min.js:12
Ember.View.Ember.Object.extend.createElement ember-0.9.5.min.js:12
Ember.View.states.preRender.insertElement ember-0.9.5.min.js:12
Ember.View.Ember.Object.extend.invokeForState ember-0.9.5.min.js:12
c ember-0.9.5.min.js:10
j ember-0.9.5.min.js:10
f.flush ember-0.9.5.min.js:10
f.end ember-0.9.5.min.js:10
Ember.run.end ember-0.9.5.min.js:10
i ember-0.9.5.min.js:10
4

1 に答える 1

2

AFAIKでは{{each}}、コントローラーを直接提供する必要があります。何かのようなもの:

{{#each Welcome.ticketController}}
{{/each}}

この jsFiddle http://jsfiddle.net/lifeinafolder/nVr4r/を見てください。エラーはもうスローされません。

まだ URL がないため、[チケットを読み込む] ボタンは機能しません。

Emberjs のドキュメントにも、いくつかの使用例があり{{each}}ます。あなたは見てみる必要があります。

また、emberjs を更新することもできます。残り火の世界では、0.9.5.min はかなり古いです :)

于 2012-09-01T08:46:36.750 に答える