我运行工厂,并在任何 Controller 中执行函数“fn_generarPopupConfirm()”。 在这个方法中,我现在创建了一个模板。该模板有一个带有 ng-click 的按钮,它调用同一工厂内的现有函数。在我的例子中,我有这个:
<button type="submit" class="btn btn-primary" ng-click="fn_confirmar()">
我怎样才能调用它(“oElim.fn_confirmar()”)?,而不需要定义一个在其中定义 $scope 对象的函数,来调用所需的函数。该功能在同一个工厂中存在。
controller: function($scope){
$scope.fn_confirmar=function(){
oElim.fn_confirmar();
}
},
我需要使用 ng-click 事件直接调用该函数“oElim.fn_confirmar()”。这可能吗?
这是我的工厂。
.factory('eliminar', function($state,$rootScope,$uibModal,popup_generico) {
var oElim= {};
oElim.fn_generarPopupConfirm = function(objeto,array,titulo,contenido) {
$rootScope.modalInstances.push($uibModal.open({
template: '<form id="form_popup" class="form-horizontal"><div class="modal-header">
<h3 class="modal-title"><button type="submit" class="btn btn-primary"
ng-click="fn_confirmar()">
OK</button></div></form>',
controller: function($scope){
$scope.fn_confirmar=function(){
oElim.fn_confirmar();
}
},
backdrop: 'static'
}));
}
oElim.fn_confirmar = function(){
var index = oElim.array.indexOf(oElim.objeto);
oElim.array.splice(index, 1);
popup_generico.fn_CerrarModal();
}
return oElim;
})
最佳答案
我不认为这在 Angular 内是可能的,因为模板是一个字符串,将在 Controller 而不是工厂的上下文中进行插值。
如果您确实希望在不将 oElim 工厂注入(inject)到 Controller 的情况下对其进行范围访问,则可以将 oElim 对象直接绑定(bind)到 $rootScope,从而使您可以在模板 "$rootScope.oElim.fn_confirmar()"
或等效的 "oElim.fn_confirmar()"
来自您在 Angular 应用程序中定义的任何模板。
关于javascript - 访问 Angular.js 中同一 .factory 中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42407094/