如何让JSLint停止在我的模型定义中抱怨Ember.js“.property()”?
,例如,给出时:
isBlah: function() {
"use strict";
...
}.property("foo", "bar").cacheable()
JSLint抱怨:
Unexpected '.'.
在.property()调用的行上。每次出现“.property()”都会发生这种情况,这会使JSLint输出充满“噪音”而不是完全有用......
答案 0 :(得分:3)
Ember documents以下方法来避免函数原型扩展。
取代 .property(),使用 Ember.computed():
fullName: Ember.computed('firstName', 'lastName', function() {
return this.get('firstName') + ' ' + this.get('lastName');
})
而不是 .observes(),请使用 Ember.observer():
fullNameDidChange: Ember.observer('fullName', function() {
console.log("Full name changed");
})
答案 1 :(得分:1)
我的解决方案是将其转换为:
isBlah: Em.property(function() {
"use strict";
...
}, "foo", "bar").cacheable()
我首先添加'属性' Ember的方法(在开始我的应用程序之前):
Em.property = function (func) {
var params = Array.prototype.slice.call(arguments, 1);
return Function.prototype.property.apply(func, params);
};
答案 2 :(得分:1)
目前无法配置此功能。您可以手动更改jslint。
在第3397行(版本2013-11-23)的jslint.js
中,您会找到这些行
case '.':
if (peek().string !== 'bind' || peek(1).id !== '(') {
next_token.warn('unexpected_a');
}
break;
注释掉if语句和警告会消失!
case '.':
// if (peek().string !== 'bind' || peek(1).id !== '(') {
// next_token.warn('unexpected_a');
// }
break;
答案 3 :(得分:0)
Arne的解决方案正沿着正确的轨道前进。但JSlint不会警告你一些事情。而不是评论相关的行在jslint.js
case '.':
if (peek().string !== 'bind' || peek(1).id !== '(') {
next_token.warn('unexpected_a');
}
break;
到此(第2行)
case '.':
if (peek().string !== 'bind' && peek().string !== 'property' || peek(1).id !== '(') {
next_token.warn('unexpected_a');
}
break;