import Controller from "@ember/controller";
import { computed } from "@ember/object";
export default Controller.extend({
filter: "",
filterTodos: computed("arrangedContent", "filter", function() {
var filter = this.get("filter");
var rx = new RegExp(filter, "gi");
var todos = this.model;
return todos.filter(function(todo) {
return todo.get("title").match(rx) || todo.get("body").match(rx);
});
}),
sortedProperties: ["date:asc"],
sortedTodos: computed.sort("model", "sortedProperties")
});
14:3错误仅允许将字符串,数字,符号,布尔值,null,未定义和函数作为默认属性ember / avoid-leaking-state-in-ember-objects
✖1个问题(1个错误,0个警告)
答案 0 :(得分:2)
在查看错误时,您违反了拖延规则ember/avoid-leaking-state-in-ember-objects
。通常,您可以在Google上搜索规则名称,然后找到规则的说明以及解决方法。这是该规则的文档:https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/avoid-leaking-state-in-ember-objects.md
在阅读该文档时,不应将数组和对象用作默认属性。我会阅读那里链接的Dockyard博客文章,以了解为什么这是不好的做法。
在您的情况下,您正在使用sortedProperties
值的数组。根据上面链接的eslint规则文档,通常可以通过在init
上设置初始值来解决此问题。但是,sort属性是一种特殊情况-通过查看computed.sort
:https://api.emberjs.com/ember/3.4/classes/@ember%2Fobject%2Fcomputed/methods/sort?anchor=sort
如您所见,他们建议使用Object.freeze
,这将防止更改属性。所以这应该工作:
sortedProperties: Object.freeze(["date:asc"]),