[英]“TypeError: chains is undefined ” when adding a handlebars if helper and navigating to homepage of app
我的Ember应用程序中有一个车把模板。
{{#if image}}
<img src="{{unbound image}}" />
{{/if}}
if语句运行正常,但是在导航到首页时似乎正在中断。 当我回到索引路由时,会出现此错误。
TypeError: chains is undefined
ember.js (line 4177)
var chains = this._chains, node = chains[key];
当我在车把模板中删除if条件时。 我不再收到该错误,可以毫无问题地返回首页。
我正在使用Ember JS Beta 1.5.0-beta.2,Handblebars 1.3.0和jQuery 1.11.0。
如果有条件的话可以解决这个问题,这确实很奇怪,但是我花了几个小时试图缩小范围,这就是我得出的结论。
当{{if}}子句中的属性名称以大写字母开头时,我看到了相同的问题。
我认为以下问题讨论可能会说明根本原因https://github.com/emberjs/ember.js/issues/1493
sly7-7评论2年前
我认为这是因为在车把中使用大写名称可以搜索全局变量。 在编写Foo.Bar时,我认为把手试图解析名称空间Foo,然后解析类或属性Bar。
我也看到了相同的错误。 根据该线程的提示,我得出结论,它的确是来自具有大写键名的重新调整JSON模型。 就我而言,我返回的JSON如下所示:
{
ClassName: "3rd Grade - Thompson",
SubjectID: "20509",
SubjectName: "English"
}
此JSON导致出现“链未定义”错误。 在定义模型的Ember路线中,我通过以下代码运行了返回的JSON,以使所有键值都变为小写:
App.GradesRoute = Ember.Route.extend({
model: function(){
var url = "https://URL-To-JSON-API";
var grades = [];
return Ember.$.getJSON(url).then(function(data){
$.each(data, function(index, obj){
var grade = {};
$.each(obj, function(key, value){
grade[key.toLowerCase()] = value;
});
grades.push(grade);
});
return grades;
});
}
});
然后在我的车把代码中,我将所有键名都切换为小写,如下所示:
<script type="text/x-handlebars" id="grades">
{{#each grade in model}}
<p>
{{grade.classname}}
{{#if grade.subjectid}}
{{grade.subjectname}}
{{/if}}
{{grade.number}} / {{grade.letter}}
</p>
{{else}}
<p>No grades posted</p>
{{/each}}
它就像一个魅力。 希望这对某人有帮助。 我知道我花了好几个小时试图解决这个问题,希望我可以省去别人的麻烦。
您最有可能在{{if}}子句的名称空间中,因此它的行为有所不同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.