添加到CollectionView的内容后,第1行出现Ember错误
Ember error at line 1 after adding to content of CollectionView
使用Ember js,我得到了一个基于树的视图结构,每个视图都有一个文本框。在任何框中输入文本并点击"回车"应为该视图添加"回复";也就是说,在原始视图下方添加另一个通过<ul>
缩进的视图。
问题是,当我点击"回车"时,ember只是在ember.js脚本的第1行崩溃并出现错误。有什么想法吗?
JS Fiddle在这里:http://jsfiddle.net/TcgJB/1/
好吧,我想你的小提琴已经修好了:http://jsfiddle.net/Sly7/hVdab/
我认为主要问题是
Bap.Reply = Ember.Object.extend({
text: null,
children: [], // don't do that, instead declare it as null, and create
// an empty children at instanciation time
addReply: function(text) {
this.get('children').addObject(Bap.Reply.create({text:text, content: []}));
},
});
//or an equivalent implementation, if you want each instance to be created with a default empty array:
Bap.Reply = Ember.Object.extend({
text: null,
children: null,
//overriding the init method (kind of constructor for Ember's Objects
init(): function() {
this._super(); // very important, don't forget it
this.set('children', []);
},
addReply: function(text) {
this.get('children').addObject(Bap.Reply.create({text:text, content: []}));
},
});
当您想要声明一个类时,如果它拥有一个子数组,则必须将其声明为null,然后在创建时将其初始化为[]
。当以ember开头时,这是一个常见的问题。事实上,潜在的行为是Bap.Reply
的所有实例将共享相同的子数组。
因此,当你在第一个孩子中添加一些孩子时,这可能会导致一个糟糕的结构,因为所有的孩子都有相同的父母,有些孩子和他们的兄弟姐妹有相同的孩子,等等…我认为在那之后,Ember在更新绑定和渲染视图时会丢失,所以你会遇到意想不到的奇怪错误。
顺便说一句,为了遵守Ember命名约定,我已经修复了一些小的拼写错误,因为类应该是驼色大小写的。
这里有两个有用的链接,详细介绍:
- Ember gotchas,第6段
- 关于命名约定
相关文章:
- Internet Explorer中的文本换行错误
- Eslint禁用行引发错误
- 添加到CollectionView的内容后,第1行出现Ember错误
- 从命令行安装时出现错误
- 在使用 javascript 动态添加行时,我正在增加索引值,但出现错误
- 解析 /page.xhtml 时出错:跟踪错误[行: 42] 与元素类型“id”关联的属性“{1}”应使用左引号
- 用于匹配错误和关联几行的正则表达式
- 类型错误:无法读取属性'行'使用javascript删除行时为null
- javascript的第行出现错误'缺少);
- 循环遍历表中的行并获取行查找错误中的每个值
- 筛选器后的行计数错误(使用if语句)
- 在Struts2中从jsp中的表映射错误的行数
- 空行出现JavaScript错误
- 未捕获的类型错误:无法设置#的属性playerNo,该属性在第4行只有一个getter
- 谷歌图表:未捕获错误:第0行有1列,但必须有2列
- Imacros/jQuery TypeError:无法访问死对象,第 816 行(错误代码:-991)
- 捕获多行错误消息中的两个字符串
- Chart.js第2686行错误
- IE8中的Magento产品页面:添加到购物车的增量默认值,忽略数量字段.Form.js第266行错误
- AngularJS重复行错误