由于Ember不支持开箱即用的表单验证(无论如何),我正在寻找一种验证表单的方法。我遇到了Dockyards ember-validations,而且共识似乎是这是EmberJS中表单验证的goto模块。
我正试图让它发挥作用,但我在开始时遇到了一些麻烦。
我没有使用文档中引用的Ember CLI,所以我从http://builds.dockyard.com/下载了一个已编译的ember-validations.js,并在我的apps js文件中包含了ember-validations.js。
文档现在说将validations.mixin传递给控制器:
所以我正在使用:
App.MemberaddController = App.FamilyController.extend(EmberValidations.Mixin,{
needs: ["family","notifications"],
familyController: Em.computed.alias('controllers.family'),
notifications: Em.computed.alias('controllers.notifications'),
validations: {
firstname: {
presence: true,
presence : {message: 'mag niet leeg zijn'}
}
},
init: function() {
this.set('familyController.pageTitle', "Gezinslid toevoegen");
},
<etc...>
}
但是在我看到的浏览器中
Uncaught ReferenceError: EmberValidations is not defined
查看ember-validations.js我可以看到mixin文件被引用为Ember.Validations.Mixin。
所以当我把它传递给我的控制器时,比如
App.MemberaddController = App.FamilyController.extend(Ember.Validations.Mixin,{
我看到了:
Error while processing route: memberadd Cannot read property 'invoke' of undefined TypeError: Cannot read property 'invoke' of undefined
在_validate
函数的ember-validations.js文件中。
我在这里做错了什么?
答案 0 :(得分:0)
首先关闭机会这是一个新项目,您可以选择使用ember-cli我建议您这样做,社区正在向这个方向发展。
那说我认为你的错误就在这里
validations: {
firstname: {
presence: true, <-- uneeded
presence <-- remove this space: {message: 'mag niet leeg zijn'}
}
},
应该是这样的
validations: {
firstname: {
presence: {message: 'mag niet leeg zijn'}
}
},