2017-02-23 25 views
1

私は工場を走らせて、どのコントローラでも関数 "fn_generarPopupConfirm()"を実行します。 このメソッドでは、テンプレートを作成しました。このテンプレートには、同じファクトリ内の既存の関数を呼び出すng-clickを持つブーンがあります。私はそれを呼び出すために、私は$スコープオブジェクトを定義した関数を定義しなくても?(「oElim.fn_confirmar()」)、それを呼び出すために行うことができますどのようにAngular.jsの同じ.factoryのメソッドへのアクセス

<button type="submit" class="btn btn-primary" ng-click="fn_confirmar()"> 

:私の例では、私はこれを持っています必要な機能。このファンクションは同じファクトリに存在します。

controller: function($scope){ 

    $scope.fn_confirmar=function(){ 
     oElim.fn_confirmar(); 
    } 
}, 

私はngのクリックイベントに「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; 
}) 
+0

を使用。どのようなエラーメッセージが表示されますか? – georgeawg

答えて

0

テンプレートは工場ではなくコントローラのコンテキスト内で補間される文字列なので、これは角度内では可能ではないと私は考えています。

あなたは本当に、コントローラにそれを注入することなく、oElim工場へのスコープのアクセスを持っているしたい場合は、$ rootScopeに直接oElimオブジェクトをバインドすることができ、テンプレート"$rootScope.oElim.fn_confirmar()"または同等以内にあなたにその方法に原型のアクセスを与えるだけで"oElim.fn_confirmar()"あなたのアングルアプリで定義したテンプレートから

0

私はそれが可能ではないですが、あなたは次の操作を行うことができます知っているように:

.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; 
 
})

$ rootScopeにオブジェクトを

controller: function($scope){ 
 
    $scope.fn_confirmar = 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="$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; 
 
})

関連する問題