我对新模型的初始化值感到困惑。
创建新记录时,似乎所有属性都将“ null ”作为值。
只要在文本字段中键入内容(绑定到模型),然后删除键入的值(因此再次为空文本字段),属性的值就会变为 emptystring 。
这是预期的行为吗?
REST API的不同之处是它们是否收到null或“”......
答案 0 :(得分:3)
如果您的属性为DS.attr('string')
,那么这是正确的。
如果字符串为null或为空,则无关紧要,这只表示文本不存在。在编程语言中思考你会发现null,因为在访问方法时会收到错误。但是在业务规则中,如果字符串为null或为空则无关紧要,因此这是一种常见模式,例如:
if (name == null || name.length == 0) {
// name is missing, prompt the user ...
}
这是一种罕见的情况:
if (name == null) {
// some logic here
} else if(name == "") {
// other logic here
}
关于创建记录。创建它时,值为null。但是当绑定到文本字段时,例如:
{{input type="text" valueBinding="field"}}
你有这种关系:
model.field <-> textfield.value
当您在model.field
中设置内容时,它将与文本字段同步,反之亦然。但是在编辑文本字段的情况下,值将始终是一个字符串,这是清除文本字段时收到空字符串而不是null的原因。