Ember {{each}}助手未显示完整列表

时间:2013-12-30 20:19:12

标签: javascript ember.js

我的模板:

{{#each lesson_types}}
    {{name}}: ${{price}}
{{/each}}
{{#view App.EnterFormView action="pushType"}}
    {{input value=currentName placeholder="Lesson Name"}} {{input value=currentPrice placeholder="Lesson Price"}}
{{/view}}
<button {{action "saveTypes"}}>Save</button>

问题在于{{each}}块,它只会呈现第一个条目。

pushType方法:

pushType: function() {
    console.log(this.get('lesson_types'));
    if (!this.get('lesson_types')) this.set('lesson_types', []);

    this.get('lesson_types').push(Ember.Object.create({name: this.get('currentName'), price: this.get('currentPrice')}));
    console.log(this.get('lesson_types'));

    this.setProperties({currentName: '', currentPrice: 0});
}

并且EnterFormView只是在其父控制器上触发它的方法,如果在焦点处按下 enter 键。

一切都很好,直到我以那种形式输入东西。如果我在这些输入中输入“Full”和“30”然后“Half”和“15”,即使pushType的控制台输出显示,每个输入中也只显示“Full”“30”这样:

undefined
[Class, nextObject: function, firstObject: undefined, lastObject: undefined, contains: function, getEach: function…]

[Class, _super: undefined, nextObject: function, firstObject: undefined, lastObject: undefined, contains: function…]    
[Class, Class, _super: undefined, nextObject: function, firstObject: undefined, lastObject: undefined, contains: function…]

所以你可以看到数组正在正常增长{{each}}只是没有显示所有条目。

值得指出的是lesson_types 是模型的属性

更新

这是扩展输出http://pastebin.com/UrEutPxZ的粘贴框 这奇怪地表明第二个对象与第一个对象不同。发生了什么事?

1 个答案:

答案 0 :(得分:1)

您应该使用pushObject而不是push

Push不会通知ember数组已更改