Javascript 模型属性slug和注释是否应该在模型层中?
我正在使用Sproutcore和Rails,想知道在哪里放置属性slug和注释之类的字符串 在模型层,我有一些模型类,例如Javascript 模型属性slug和注释是否应该在模型层中?,javascript,ruby-on-rails,ruby,sproutcore,Javascript,Ruby On Rails,Ruby,Sproutcore,我正在使用Sproutcore和Rails,想知道在哪里放置属性slug和注释之类的字符串 在模型层,我有一些模型类,例如 SC.User = SC.Record.extend({ firstName: '', }) 我是否应该将属性slug和注释放在模型类中: SC.User = SC.Record.extend({ firstName: '', firstNameSlug: 'First name', firstNameComment: 'Enter your fir
SC.User = SC.Record.extend({
firstName: '',
})
我是否应该将属性slug和注释放在模型类中:
SC.User = SC.Record.extend({
firstName: '',
firstNameSlug: 'First name',
firstNameComment: 'Enter your first name',
})
或者这些视图应该与模型分离吗
在模型类中使用的好处是,我现在可以拥有一个通用视图,该视图迭代所有模型属性并自动显示它们
你认为呢?Sproutcore基于模型-视图-控制器范式,而且它使用了一个相当保守的严格版本的mvc。您的模型应该只包含某个域对象的实际值。因此,不应在模型对象中放置注释和占位符字符串 而是使用控制器绑定到模型对象以及要从视图中取消绑定的所有其他属性。典型的控制器设置可能如下所示
YourApp.userController = SC.ObjectController.extends({
user: SC.User.create({ ... }), // Create a new user or load one from the store
firstNamePlaceholder: 'First name',
firstNameComment: 'Enter your first name',
...
});
将控制器内的附加属性组合到控制器内定义的一个或多个对象中以进行某些分组可能是有意义的,例如
YourApp.userController = SC.ObjectController.extends({
user: SC.User.create(),
placeholder: SC.Object.create({
firstName: 'First name',
lastName: 'Last name',
}),
comment: SC.Object.create({
firstName: 'Enter your first name',
lastName: 'Enter your last name'
})
});
这可能会在以后的视图中产生更清晰的结构
简而言之,将模型对象视为没有类参数的传统域对象,只使用域对象的每个实例(可能)唯一的参数。其他所有内容都进入控制器层。确保视图尽可能保持转储状态,并且只包含到所有必需应用程序状态的绑定