我经营工厂,并执行功能" fn_generarPopupConfirm()"在任何控制器中。 在这个方法中,我现在已经创建了一个模板。此模板有一个具有ng-click的按钮,该按钮调用同一工厂内的现有函数。在我的例子中,我有这个:
<button type="submit" class="btn btn-primary" ng-click="fn_confirmar()">
如何调用它(&#34; oElim.fn_confirmar()&#34;)?而无需定义我定义$ scope对象的函数来调用所需的函数。此功能存在于同一工厂中。
controller: function($scope){
$scope.fn_confirmar=function(){
oElim.fn_confirmar();
}
},
我需要直接调用函数&#34; oElim.fn_confirmar()&#34;使用ng-click事件。它有可能吗?
这是我的工厂。.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;
})
答案 0 :(得分:0)
我不相信这是可能的角度,因为模板是一个字符串,将在控制器的上下文内插,而不是工厂。
如果你真的希望对oElim
工厂具有范围访问权限而不将其注入控制器,则可以将oElim对象直接绑定到$ rootScope,从而为模板中的方法提供原型访问{{ 1}}或等同于您在角度应用中定义的任何模板的"$rootScope.oElim.fn_confirmar()"
。
答案 1 :(得分:0)
据我所知,这是不可能的,但你可以做到以下几点:
controller: function($scope){
$scope.fn_confirmar = oElim.fn_confirmar;
},
&#13;
或将对象添加到$ rootScope
.factory('eliminar', function($state,$rootScope,$uibModal,popup_generico) {
var oElim= {};
$rootScope.oElim = 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="oElim.fn_confirmar()">
OK</button></div></form>',
controller: Function.prototype, //Just dummy function
backdrop: 'static'
}));
}
oElim.fn_confirmar = function(){
var index = oElim.array.indexOf(oElim.objeto);
oElim.array.splice(index, 1);
popup_generico.fn_CerrarModal();
}
return oElim;
})
&#13;
或更好,仅使用内置角度事件服务
.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="$emit('fn_confirmar')">
OK</button></div></form>',
controller: Function.prototype, //Just dummy function
backdrop: 'static'
}));
}
oElim.fn_confirmar = function(){
var index = oElim.array.indexOf(oElim.objeto);
oElim.array.splice(index, 1);
popup_generico.fn_CerrarModal();
}
$rootScope.$on('fn_confirmar', oElim.fn_confirmar);
return oElim;
})
&#13;