Javascript Aurelia代理不触发setter

Javascript Aurelia代理不触发setter,javascript,aurelia,Javascript,Aurelia,js代理设置程序在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, va

js代理设置程序在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会触发,但setter函数不会执行,即使配置对象中的值发生了更改。

您的问题不是Aurelia问题,您使用代理的方式是错误的。我提供了一个使用代理设置器和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';

除了if语句外,我看不出我的示例有什么不同。我已将代理用于配置对象-->导出默认新代理的后续操作。。。