簡體   English   中英

Aurelia代理不會觸發設置器

[英]Aurelia Proxy does not fire setter

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問題,您以錯誤的方式使用代理。 我整理了一個使用代理設置器和獲取器的示例。

如果您在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';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM