AngularJS:如何从AngularJS服务中清除HTML表单

AngularJS:如何从AngularJS服务中清除HTML表单,angularjs,forms,angularjs-scope,Angularjs,Forms,Angularjs Scope,我想在用户输入完成一些操作后清除表单。我知道如何从控制器中执行此操作。例如,我可以运行以下函数: $scope.clearForm = function () { $scope.addOrEditForm.$setPristine(); $scope.firstName = ""; $scope.secondName = ""; $scope.position = ""; }; 这很有效。但是我需要从另一个函数调用这个函数,它位于AngularJS服务中

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

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

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

在控制器中使用事件

// listen for the event in the relevant $scope
$scope.$on('myCustomEvent', function (event) {
    $scope.clearForm();
});
从服务调用事件

$rootScope.$broadcast('myCustomEvent');

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