我的模板:
{{#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的粘贴框 这奇怪地表明第二个对象与第一个对象不同。发生了什么事?
答案 0 :(得分:1)
您应该使用pushObject而不是push
Push不会通知ember数组已更改