2

オブジェクトのコレクション (MyApp.instrsController、ArrayController) があり、各オブジェクトには「アクション」(浮動小数点数) というプロパティがあります。ハンドルバー テンプレートを使用して表示するにはどうすればよいですか?

以下は私が試したコードです:

<ul>
{{#each MyApp.instrsController}}
   <li>{{action}}</li>
{{/each}}
</ul>

しかし、'action' は 'keyword' であるため、javascript ランタイム エラー 'options is undefined' がスローされます。

ありがとうございます。

4

4 に答える 4

2

プロパティ名の前に を付けることで、現在のコンテキストでプロパティを探していることを手動で指定できますthis.

{{this.action}}
于 2012-05-30T02:34:17.623 に答える
1

プロパティ名を変更できない場合は、モデル オブジェクトで計算されたプロパティを使用できます。http://jsfiddle.net/pangratz666/4ZQM8/を参照してください。

ハンドルバー:

<script type="text/x-handlebars" >
    <ul>
        {{#each App.controller}}
            <li>{{actionProp}}</li>
        {{/each}}
    </ul>
</script>

JavaScript :

App.Object = Ember.Object.extend({
    actionProp: function() {
        return this.get('action');
    }.property('action')
});


App.controller = Ember.ArrayController.create({
    content: [],

    addObj: function(number) {
        this.pushObject(App.Object.create({
            action: number
        }));
    }
});

カスタム モデル オブジェクトがない場合は、CollectionView で計算されたプロパティを使用できます。http://jsfiddle.net/pangratz666/r6XAc/を参照してください。

ハンドルバー:

<script type="text/x-handlebars" data-template-name="item" >
    {{actionProp}}
</script>​

JavaScript :

Ember.CollectionView.create({
    contentBinding: 'App.controller',
    itemViewClass: Ember.View.extend({
        templateName: 'item',
        actionProp: function(){
            return this.getPath('content.action');
        }.property()
    })
}).append();
于 2012-05-30T09:34:15.547 に答える
1

プロパティの名前を変更することを強くお勧めします。あなたは自分のドメインの中核ではない問題に取り組んでいます。

ヤグニ。接吻。

プログラミングで学ぶべき最大の教訓は、javascript を操作して、予約済みキーワードの使用を気にしないようにする方法ではなく、物事を成し遂げる方法です。理解するのが難しいように見える脆弱なソリューションがなければ、後でより幸せになります。

これはフロートなので、「actionLevel」を使用することをお勧めできますか?

于 2012-05-30T13:26:38.887 に答える