Javascript 角度单击在窗体内激发两次或更多时间
我在angular中有一个表单,有两个动态添加新字段。在Javascript 角度单击在窗体内激发两次或更多时间,javascript,angularjs,Javascript,Angularjs,我在angular中有一个表单,有两个动态添加新字段。在div按钮内,有一个ng click指令触发,并(当然)处理ng repeat。问题不在于它们不起作用,而是当你点击“添加新”按钮时,它们被执行了三次 我检查了一些基本的东西: 一次被称为一次,而不是多次 browsersync的重影模式已禁用 而且没有问题。问题是(我认为)在角度上的形式的默认行为。。。任何ng点击执行“提交”。。。让我向您展示代码: 这是我的控制器代码,用于添加新字段: $scope.$apply()用于ng rep
div
按钮内,有一个ng click
指令触发,并(当然)处理ng repeat
。问题不在于它们不起作用,而是当你点击“添加新”按钮时,它们被执行了三次
我检查了一些基本的东西:
- 一次被称为一次,而不是多次
- browsersync的重影模式已禁用
$scope.$apply()
用于ng repeat
,以使用ng模型中的绑定,以下是公共代码段中的标记(为了简单起见,使用jade):
以及错误屏幕:
3次在单击任何“添加新”按钮时触发相同错误
有什么想法吗。。。提前谢谢
编辑:
safeApply
清除了$apply已在进行中的问题
,但基本问题仍然存在。我使用$apply使work成为我的ng repeat
绑定,因为:
.col.s12(ng repeat=“product.cancelations中的取消”)
这是:
input(type=“text”name=“cancellation.inputName”ng model=“cancellation.namePayload”必需)
想法很简单:cancellation.namePayload
必须是:product.cancellations.description
由于某些原因,未应用作用域。1)您需要删除$scope.$apply()如果函数已经在控制器中并且没有在angular之外执行任何异步操作,则从函数中选择code>。在您的情况下,它们似乎没有-它们只是将静态项添加到该数组中
2) 尝试替换为:
1) 您需要删除$scope.$apply()如果函数已经在控制器中并且没有在angular之外执行任何异步操作,则从函数中选择code>。在您的情况下,它们似乎没有-它们只是将静态项添加到该数组中
2) 尝试替换为:
你的html代码是什么?你怎么能确定这仅仅是因为错误日志控制台而被调用了三次???那么,当我点击一次按钮时,是否触发了三次相同的错误。。。没有@WasiqMuhammad.@MayK html表单代码在链接“GITLAB SNIPPET”中大约有200行,所以实际放在这里。你的html代码是什么?你怎么能确定它被调用了三次仅仅是因为错误日志控制台???嗯,当我点击一次按钮时,会触发三次相同的错误。。。没有@WasiqMuhammad@MayK html表单代码在链接“GITLAB SNIPPET”中,大约有200行,所以实际放在这里。我编辑了这篇文章,日志消失了,但我以前的问题仍然存在。。。谢谢我编辑了帖子,日志消失了,但我以前的问题仍然存在。。。谢谢
this.cancelations = [
{
namePayload: "product.cancelations.name",
descriptionPayload: "product.cancelations.description",
inputName: "inputname-1",
inputDesc: "inputdesc-1"
}
];
this.dateforms = [
{
daysFormName : "days_1",
daysModel : "product.ranges.days_1",
fromFormHrs : "fromHrs_1",
fromModelHrs : "product.ranges.fromHrs_1",
fromFormMins : "fromMins_1",
fromModelMins : "product.ranges.fromMins_1",
toFormHrs : "toHrs_1",
toModelHrs : "product.ranges.toHrs_1",
toFormMins : "toMins_1",
toModelMins : "product.ranges.toMins_1"
}
];
this.addDateform = () => {
let next = this.dateforms.length;
this.dateforms.push({
daysFormName : `days_${next + 1}`,
daysModel : `product.ranges.days_${next + 1}`,
fromFormHrs : `fromHrs_${next + 1}`,
fromModelHrs : `product.ranges.fromHrs_${next + 1}`,
fromFormMins : `fromMins_${next + 1}`,
fromModelMins : `product.ranges.fromMins_${next + 1}`,
toFormHrs : `toHrs_${next + 1}`,
toModelHrs : `product.ranges.toHrs_${next + 1}`,
toFormMins : `toMins_${next + 1}`,
toModelMins : `product.ranges.toMins_${next + 1}`
});
$scope.$apply();
};
this.addPolitic = () => {
let next = this.cancelations.length;
this.cancelations.push({
namePayload: `product.cancelationspols.name_${next + 1}`,
descriptionPayload: `product.cancelationspols.description_${next + 1}`,
inputName: `inputname-${next + 1}`,
inputDesc: `inputdesc-${next + 1}`
});
$scope.$apply();
};
$scope.safeApply = function(fn) {
var phase = this.$root.$$phase;
if(phase == '$apply' || phase == '$digest') {
if(fn && (typeof(fn) === 'function')) {
fn();
}
} else {
this.$apply(fn);
}
};