无法让Ember Validations工作

时间:2015-03-04 15:08:17

标签: validation ember.js

由于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文件中。

我在这里做错了什么?

1 个答案:

答案 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'}
    }
},