2015-05-21 2 views
0

На шаблоне есть форма, и при нажатии кнопки она нажимает на действие в контроллере. Когда пользователь набирает что-то и удаляет его, свойство binded будет пустой строкой, а не неопределенной. Я использовал ниже, чтобы решить эту проблему, но он выглядит слишком хаки и невозможен. Есть ли что-то, что заменяет пустые строки на атрибуты модели неопределенными? Попытка установить его в классе модели тоже не работает, поскольку я не могу заставить вычисляемые свойства работать самостоятельно. т.е. user: function(){ return undefined if ""}Ember: установка модели на неопределенные пустые строки

Вот мой контроллер, который обрабатывает форму представляет:

Controller: 
    actions:{ 
    save: function(){ 
     if(this.get('user.name')===""){ 
     this.set('user.name',undefined); 
     } 
     if(this.get('user.phone')===""){ 
     this.set('user.phone',undefined); 
     } 
     if(this.get('user.email')===""){ 
     this.set('user.email',undefined); 
     } 
    } 
    // Process data 
} 

ответ

1

Вы можете переопределить get объекта Ember для возврата не определен, если значение является пустой строкой.

var Model = Em.Object.extend({ 
    get: function(path) { 
    var value = this._super(path); 
    return value || undefined; 
    } 
}); 

var model = Model.create({ 
    name: 'Blessan', 
    address: '' 
}); 

alert(model.get('name')); 
alert(model.get('address')); 

Here is a working demo.

+0

Я использую ES6, любая идея, какой файл нужно поместить этот код в? Благодарю. – holyxiaoxin

+0

Ну, вы можете использовать этот код везде, где есть ваша модель. Или вы можете обернуть модель в Em.Object, прежде чем вернуться на маршрут. – blessenm

Смежные вопросы