【问题标题】:AngularJS: How to clear HTML form from AngularJS serviceAngularJS:如何从 AngularJS 服务中清除 HTML 表单
【发布时间】:2017-08-13 16:20:46
【问题描述】:

我想在完成一些用户输入的操作后清除表单。我知道如何从控制器执行此操作。例如,我可以运行以下函数:

$scope.clearForm = function () {
     $scope.addOrEditForm.$setPristine();
     $scope.firstName = "";
     $scope.secondName = "";
     $scope.position = "";
};

这行得通。但我需要从位于 AngularJS 服务中的另一个函数调用此函数。我怎么能从那里调用它?或者我如何在服务中定义clearForm 函数并访问所有这些表单变量,如$scope.firstName$scope.secondName$scope.position?感谢您的帮助!

【问题讨论】:

  • 将 $scope 作为参数传递给服务并从那里清除它?您可能希望将所有这些属性(firstname、secondName..)放入范围内的一个对象中,然后仅将该对象传递给您的服务,而不是所有 $scope
  • 我认为最好的方法是创建一个服务函数,然后可以在服务和控制器中使用它,然后您可以将所需的所有变量从控制器传递给服务。或者按照 Gonzalo 的建议,传递 $scope。我只是发现混合 $scopes 会导致很多问题。
  • 我怎样才能将变量传递给服务?
  • 例如我有proposeNewsCtrl控制器和postNewsFactory服务。 angular.module('twitterApiApp').factory('postNewsFactory', ['$http', 'publicationsFactory', 'channelsFactory', function($http, publicationsFactory, channelsFactory) {}如何将这些变量或1个带有变量的对象从控制器注入到服务中?

标签: angularjs forms angularjs-scope


【解决方案1】:

在控制器中使用事件

// listen for the event in the relevant $scope
$scope.$on('myCustomEvent', function (event) {
    $scope.clearForm();
});

从服务调用事件

$rootScope.$broadcast('myCustomEvent');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-21
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 2017-06-25
    • 2016-11-16
    相关资源
    最近更新 更多