【发布时间】:2015-12-05 21:28:22
【问题描述】:
我一直遇到这个错误,我很困惑为什么。我无法将开发工具中的错误追溯到我的主 JS 文件中的任何内容。我的 Ember 相关代码如下:
var App = Ember.Application.create();
App.ApplicationRoute = Ember.Route.extend({
model: function() {
var url = 'http://www.json-generator.com/api/json/get/bMRERKrXfS';
return Ember.$.getJSON(url).then(function(data) {
model = {
list1: data
};
return model;
});
}
});
Ember.Handlebars.helper('autocomplete', Ember.View.extend({
templateName: 'controls/autocomplete',
filteredList: function() {
...
}
return list.filter(function(item) {
...
});
}.property('list.@each', 'filter')
}));
我已经从那里的结构中删除了特定于应用程序的代码。每当我尝试运行它时,我都会收到以下错误:
Ember 无法读取似乎来自我的 ember.min.js 文件的未定义属性“路径”。任何追踪此问题的帮助都会很棒。
编辑 在本地而不是在 CodePen 中运行此代码时,我最终会遇到以下错误:
Uncaught TypeError: Cannot read property 'extend' of undefined 这看起来是由 Ember.View.extend 抛出的
和
未捕获的类型错误:无法读取来自 ember.min 文件的未定义属性“isHelperFactory”。
编辑 2 我尝试将帮助程序更新为 Ember 组件:
App.AutoCompleteComponent = Ember.Component.extend({
filteredList: function() {
var list = this.get('list'),
filter = this.get('filter'),
filterArr = [],
filterArrLength;
if (filter && filter.indexOf(', ') !== -1) {
filterArr = filter.split(', ');
filterArrLength = filterArr.length;
filter = filterArr[filterArrLength - 1]
}
if (!filter || (filterArrLength > 0 && filterArr[filterArrLength - 1].length == 0)) {
$("#filter-results").hide();
INPUT.unbindKeys();
return;
} else {
if (!$("#filter-results").is(":visible")) {
INPUT.bindKeys();
$("#filter-results").show();
}
}
return list.filter(function(item) {
if (!filterArrLength) {
return item.title.toLowerCase().startsWith(filter);
} else {
return item.title.toLowerCase().startsWith(filterArr[filterArrLength - 1]);
}
});
}.property('list.@each', 'filter')
});
我已将 Handlebars 模板更新为 "components/auto-complete"
不过,我收到了同样的错误。我的 CodePen 链接也已更新以供审核。
【问题讨论】:
标签: javascript ember.js