js proxy setter不会在aurelia中被解雇。我有一个配置,我注入我的组件:
const config = { prop: 'value' };
export default new Proxy(config, {
get: function(obj, prop) {
console.log('get ' + prop + ' = ' + obj[prop]);
return obj[prop];
},
set: function(obj, prop, value) {
console.log('set ' + prop + ' = ' + value);
obj[prop] = value;
return true;
},
});
更改属性时会触发getter,但即使config对象中的值发生更改,也不会执行setter函数。
答案 0 :(得分:2)
您的问题不是Aurelia问题,您以错误的方式使用代理。我把一个代理setter和getter的例子放在一起使用。
如果您在Chrome中打开开发者控制台,则可以在浏览器中尝试以下代码。需要注意的重要事项是使用返回的代理,而不是原始对象。您需要使用代理。
let config = { prop: 'value' };
let configProxy = new Proxy(config, {
get: function(target, property) {
return target[property];
},
set: function(target, property, value) {
if (value.length > 3) {
target[property] = value;
} else {
throw new ReferenceError(property + ' cannot be set');
}
}
});
// Setting a value less than 3 characters will trigger an error
configProxy.prop = 'D';
// This is fine
configProxy.prop = 'Dwayne';