Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在隔离范围内的清晰形式?_Javascript_Angularjs_Html_Forms_Ionic Framework - Fatal编程技术网

Javascript 在隔离范围内的清晰形式?

Javascript 在隔离范围内的清晰形式?,javascript,angularjs,html,forms,ionic-framework,Javascript,Angularjs,Html,Forms,Ionic Framework,我在爱奥尼亚应用程序中有一个评论文本输入,在提交表单时,需要将其清除 我有一个离子模式内的形式,所以我假设我是一个孤立范围的受害者,但是,形式仍然需要清除。。这是我的控制器(我已在试图清除表单的位置进行了标记): 添加$scope.$apply();还有 我们需要在$scope中应用更改,因为Easternc.submitComment()不是角度函数,因此此函数中的任何更改都不会调用角度摘要循环来应用更改 .controller('EasternInnerCtrl',function($ht

我在爱奥尼亚应用程序中有一个评论文本输入,在提交表单时,需要将其清除

我有一个离子模式内的形式,所以我假设我是一个孤立范围的受害者,但是,形式仍然需要清除。。这是我的控制器(我已在试图清除表单的位置进行了标记):

添加$scope.$apply();还有

我们需要在$scope中应用更改,因为Easternc.submitComment()不是角度函数,因此此函数中的任何更改都不会调用角度摘要循环来应用更改

.controller('EasternInnerCtrl',function($http、$timeout、$scope、$ionicLoading、$stateParams、$ionicScrollDelegate、$CordovaSocialShareing、$IonicModel、Easternc、AuthService){
$scope.eastc=Easternc.get($stateParams.eastcId);
$ionicModal.fromTemplateUrl('commenter.html'{
范围:$scope,
动画:“向上滑动”
}).then(功能(模态){
$scope.modal=modal
})  
$scope.openModal=function(){
$scope.modal.show();
}
$scope.closeModal=函数(){
$scope.modal.hide();
};
$scope.$on(“$destroy”,函数(){
$scope.modal.remove();
});
$scope.addComment=函数(新注释,注释){
Easternc.submitComment($scope.eastc.id,new_comment,comments)。然后(函数(数据){
如果(数据状态=“正常”){
var user=AuthService.getUser();
var注释={
作者:{name:user.data.username},
内容:新华社评论,,
日期:date.now(),
user_gravatar:user.avatar,
id:data.comment\u id
};
$scope.eastc.comments.push(comment);
$scope.new_comment=“”;//这里是我试图清除表单的地方
$scope.new_comment_id=data.comment_id;
$scope.$apply();//此处更改应用于$scope。
}
});
};

})
您对范围问题的怀疑是正确的,尽管在本例中,这是因为子范围而不是孤立的范围

解决此问题的最简单(也是最好)方法是使用“点”表示法,以便您尝试访问和清除的属性在窗体和控制器中都是相同的

因此,您应该创建一个对象,然后使用该对象,而不是使用
$scope.new_comment

例如,在控制器中,首先设置值:

$scope.new_comment_form = {
  content: ""
};
然后在表单html中可以使用

<input type="text" ng-model="new_comment_form.content">
在这里,我使用与上面相同的代码大纲创建了一个示例工作plnkr。它从一个新文件加载模态,在执行
addComment
操作后,“保存”注释并清除表单:

有关使用点表示法以及为什么要使用点表示法的更多信息,请参阅以下链接:

您使用的是Angular和Ionic的哪个版本?@Eric Ionic v 1.0.0和Angular 1.3.13我已经添加了,但是它仍然没有清除表单,并且我得到了错误:错误:[$rootScope:inprog]$digest已经在进行中请尝试将代码放在$scope.addComment()中的submitComment()函数之后清除表单功能。我尝试了一下,它仍然没有清除表单。我尝试了很多不同的变体,但在调用函数$scope.addComment时似乎无法正确执行,您有了新的注释作为参数,如何获得这个新的注释参数??是否确定此参数在当前范围内??如果您也能提供该代码,这将非常有用。另一篇文章中建议使用新的_comment参数,因为我在一个单独的范围内提交注释时遇到了问题。因此,它只是我在Easternc工厂的submitComment函数的一个参数,工作起来很有魅力!显然,我还有很多东西要学!非常感谢你!我的特定设置的唯一缺点是,如果用户再次发布,则它不会清除表单,但会对此进行阅读并进行整理。肯定还有其他问题,可能是响应失败,因此没有调用成功处理程序。如果出现任何错误,应添加故障处理程序
<input type="text" ng-model="new_comment_form.content">
$scope.eastc.comments.push(comment);

// clear like this
$scope.new_comment_form.content = ""; 

$scope.new_comment_id = data.comment_id;