2017-01-24 6 views
1

js proxy setter не запускается в aurelia. У меня есть конфиг, что я впрыснуть в моих компонентах:Aurelia Proxy не срабатывает сеттер

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; 
    }, 
}); 

Поглощающие пожары, когда я изменить свойство, но функция сеттера не выполняется, даже если значение в изменении объекта конфигурации.

ответ

2

Ваша проблема не является проблемой 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'; 
+0

Я не вижу разницы с моим примером, кроме инструкции if. Я уже использую прокси для последующих операций над объектом конфигурации -> экспорт по умолчанию нового прокси ... – Chris