2015-02-06 30 views
0

我有一个模型不提供任何属性的默认值。我将此模型绑定到模板,并且我只想在模型过渡时保存模型。然而,简单地输入一个文本字段然后离开文本字段将导致记录变脏,因为它以前是空的/未定义的,现在它是一个空字符串。我想知道这是否有一个简单的解决办法?如何为Ember Data中的所有数据类型设置默认值?

型号:

App.MyModel = DS.Model.extend({ 
    myProperty: DS.attr('string') 
}); 

路线:

App.MyModelRoute = Ember.Route.extend({ 
    actions: { 
    willTransition: function(transition) { 
     var modelIsDirty = this.get('currentModel.isDirty'); 

     if (modelIsDirty) { 
     console.log('dirty model!'); 
     } 
     else { 
     console.log('not dirty'); 
     } 
    } 
    } 
}); 

模板:

{{input type="text" value=model.myProperty}} 

如果我单纯着眼/模糊输入,这将导致记录变脏。有没有办法将任何字符串属性的默认值设置为“'而不是nullundefined?我认为这可能会解决这个问题。

我知道defaultValue属性,但我有15个模型和一些有40 +属性每个。我想避免为每一个字符串设置一个defaultValue

回答

1

因此,如果我理解正确,您的服务器返回null或未定义的模型中应该是字符串的一些属性?我有一些类似的问题,我有时希望该属性为null而不是空字符串。相反,修改模型类,我解决了这个通过增加的观察员灰烬文本框类:

Ember.TextField.reopen({ 
    nullable: false, 

    nullableObserver: function() { 
     if (this.get('nullable') && this.get('value') === '') { 
      this.set('value', null); 
     } 
    }.observes('value') 
}); 

与上面的代码,我可以通过它的可空属性设置为true不是使文本字段为空的

{{input type="text" value=someValue nullable=true}} 

或者您可以省略上述代码中的可空属性,并将其设置为默认情况下为所有输入字段。

+0

我喜欢这种方法。谢谢!! – egaba 2015-02-09 18:41:33

相关问题