2015-05-21 86 views
0

模板上有一個表單,當按下提交時,它會在控制器中觸發一個操作。當用戶鍵入某些東西並刪除它時,綁定屬性將是一個空字符串,而不是未定義的。我用下面的方法來解決這個問題,但它看起來太駭人,不可取。有沒有什麼能夠將模型屬性上的空字符串替換爲未定義的?試圖將它設置在模型類中不起作用,因爲我無法獲得計算屬性來處理它自己。即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返回未定義如果該值是一個空字符串。

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.

我使用ES6
+0

,哪些文件,我應該將此代碼放在任何想法?謝謝。 – holyxiaoxin

+0

那麼你可以使用這個代碼無論你的模型是。或者,您可以在返回路由之前將模型包裝在Em.Object中。 – blessenm

相關問題