麻烦迭代_.each

时间:2014-09-03 18:49:20

标签: backbone.js underscore.js

我是backbone.js和underscore.js的新手。我有一个注册和登录表格,处理验证错误。 当我提交未填写的表单时,我正在捕获错误。 当我把所有错误都放在表单上时,我很困惑。我只得到数组中所有表单元素的最后一个错误。我研究过,似乎无法找到解决方案。下面的代码段。

这个函数遍历数组,但只给出了数组中的最后一个索引而不是全部 错误消息。当我执行console.log时,我的控制台日志显示所有错误消息(error.message) 但是并没有像我所说的那样只在最后一个表格上显示所有这些。我做错了什么。

感谢您的帮助 提前感谢你。 我会发布完整的代码我得到它的工作,所以它可以帮助其他人。我;使用骨干1.1.2

PDH

validate: function(attrs, options) {         
var errors = [];
ect...

}

showErrors: function(errors) {

_.each(errors, function (error) {
var controlGroup = this.$('.' + error.name);
controlGroup.addClass('errors');  //not sure if I need this
$("div.form-group").find('.help-inline').text(error.message);

}, this );
},

3 个答案:

答案 0 :(得分:1)

而不是

$("div.form-group").find('.help-inline').text(error.message);

使用

$("div.form-group").find('.help-inline').append(error.message+"<br />");

在每个循环中,您将覆盖已存在的文本。因此,只有最后一个指数存在

答案 1 :(得分:0)

循环遍历错误div。从阵列中获取适当的错误。将错误设置为错误div的文本。

_.each($("div.form-group").find('.help-inline'), function(errorDiv, index){

 $(errorDiv).text(errors[index]);
});

<强> FIDDLE

答案 2 :(得分:0)

我弄清楚我的问题是什么,我可以踢自己没有看到明显的问题。我的代码是正确的问题是我在编写类,因为所有类都具有相同的名称。我不得不做一些改变 HTML代码。在我将所有类名相同之前,例如form-group。我将名称更改为表格组电子邮件 例如,它在我的验证中清除了几个问题。希望它能节省别人的时间 PDH

<div class="form-group email">
<label for="email2">email &nbsp;<span class="help-inline">
</span><input type="email" name="email"></label><br />             
</div>

showErrors: function(errors) {

 _.each(errors, function ( error, index) {

 var controlGroup = this.$('.' + error.name);
 controlGroup.addClass('errors');

 controlGroup.find('.help-inline').text(error.message);
 console.log(error.message);


}, this);
},