2015-09-24 2 views
1

Я писал это в extjs4:Extjs6 применить свойство из конфигурации с помощью функции

Ext.define('Superstore', { 
    extends: 'Ext.data.Store' 

    config : { 
     customer : null, 
    }, 

    applyCustomer : function (value) { 
     this.customer = value; 
    }, 

    model : 'Supermodel' 

}); 

я попробовал то же самое в extjs6, но без успеха: "

Ext.define('Supermodel', { 
    extend: 'Ext.data.Model', 

    requires: ['Ext.data.reader.Json', 'Ext.data.proxy.Rest'], 

    config: { 
     customer: null 
    }, 

    fields: [ 
     {name: 'id', type: 'string'}, 
     ... 
    ], 

    proxy: { 
     type: 'rest', 
     url: '/customers/{customer}/users', 
     reader: { 
      type: 'json' 
     } 

    }, 

    applyCustomer: function (value) { 
     this.customer = value; 
     this.proxy.url.replace('{customer}', value); 
    } 

}); 

ли они убрать магию ? Или есть ли какой-нибудь другой, лучший способ построить мой url, как в моем коде? Я уже видел несколько решений, но ни один из них не подходит для моего приложения. Я получаю customerId через сеанс, который отправляется через сервер после входа в систему. Я бы получил магазин через StoreManager, получить запись клиента и применить его к прокси.

Заранее спасибо.

ответ

2

Если вам не нужно манипулировать значение использовать update функцию вместо:

updateCustomer: function(newValue){ 
    this.proxy.url.replace('{customer}', newValue); 
} 

(и удалить applyCustomer функцию)

+0

выполняется эта функция автоматически? – xdn

+0

@ Марвин: Да. –

+0

Это не работает. Функция не выполняется. URL-адрес по-прежнему остается клиентом /% 7Bcustomer% 7D/users (он должен быть не менее _/customers/null/users_) – xdn