0
votes

Appelez une fonction angularjs sur le bouton clic ne fonctionne pas

J'ai une exigence où je veux appeler une fonction code> angularjs code> sur le bouton Cliquez. J'ai donc essayé comme ci-dessous

<button class="btn btn-default customBtn" ng-click="GetFilter();">
    <i class="fa fa-filter" aria-hidden="true"></i>
  Filter
</button>


---------------------------

<div ng-app="grdContrl">
    <div class="flTable" id="dtAssignVendor">
        <table id="assignVender" class="mp myTable table table-striped table-bordered" cellspacing="0" width="100%">                            
        </table>
    </div>
</div>


7 commentaires

probablement parce que votre fonction dans le contrôleur est appelée getfiler , bien que dans le modèle, vous référencez getfilter


@Luninroman: Ohhh, mon erreur. Laissez-moi essayer de vérifier


@Luninroman: rien ne s'est passé, j'ai essayé d'ajouter une alerte mais que cela ne tire pas


@BN, s'il vous plaît assurez-vous de lier le contrôleur.


@Sultan: Oui je l'ai lié. jsfiddle.net/e3gu2hca . Pour plus d'informations, consultez ici jsfiddle.net/e3gu2hca/1


Je reçois cette erreur angulaire.js: 15536 ​​ERREUR: [$ contrôleur: CTRLREG] Le contrôleur avec le nom 'dtassignvendor' n'est pas enregistré.


@BN, le contrôleur que vous avez enregistré n'est pas dans la structure DIV où vous appelez la fonction, alors veuillez l'enregistrer correctement où dans la fonction de clic est enregistrée. De plus, pour votre numéro de registre, voici une autre liaison de flux de stack-over Stackoverflow.com/Questtions/42084926/...


3 Réponses :


0
votes

Autant que je vois, vous ne liez pas le contrôleur à votre modèle, vous devez utiliser la directive NG-Controller et enveloppez le bouton à l'intérieur (et corrigez l'erreur d'orthographe sur $ étendue.getfilter comme étant soulevé dans les commentaires) xxx


8 commentaires

Mon bouton est dans un autre div, alors cela fonctionnera-t-il selon votre réponse?


besoin de rester dans un ancêtre commun qui a la directive NG-Controller pour pouvoir accéder à la méthode


Je ne peux pas faire le chemin mentionné comme mon bouton est à l'extérieur de cette div. Jetez un coup d'œil à toute ma partie HTML. jsfiddle.net/e3gu2hca


Je reçois cette erreur angulaire.js: 15536 ​​ERREUR: [$ contrôleur: CTRLREG] Le contrôleur avec le nom 'dtassignvendor' n'est pas enregistré.


J'ai vérifié votre code et vous avez plusieurs directives NG-APP dans votre modèle, vous devez refroidir votre code et mettre la table et le bouton à l'intérieur d'un ancêtre commun avec NG-APP = "GRDCONTRL" et NG-Controller = "dtAssignvendor".


Pouvez-vous s'il vous plaît aidez-moi .. Je suis nouveau dans JS anguleux.


es-tu leur, laissez-moi savoir si tu peux m'aider


Je ne peux pas aider plus que cela maintenant, vous devez refroidir votre code en prenant cela comme exemple :)



0
votes

Le modèle de votre code devrait être quelque chose comme ceci:

<div ng-app="myApp">
    <div controller="ctrl1">
        <button ng-click="someFunInCtrl1()">Click Me</button>
        ...
    </div>
    <div controller="ctrl2">
        <button ng-click="someFunInCtrl2()">Click Me</button>
        ...
    </div>
</div>


0 commentaires

1
votes

Vous ne pouvez pas obtenir de valeurs de filtrage, car le bouton de filtrage est en dehors du contrôleur et si vous utilisez datatable code> Ajoutez également dt-option code>, dt-colonnes code> et dt-instance code> dans

code> comme attributs.

Vous avez comme ça P>

app2.controller('dtAssignVendor',function ($scope, $http, DTOptionsBuilder, DTColumnBuilder,DTInstances) {
       $scope.GetFiler = function () {
     //get input values into scope instead of javascript variable
    //var strZone = $('#SAPExecutive_R4GState').val();
    //var strUtility = $('#ddlUtility').val();
    $scope.strZone = $scope.SAPExecutive_R4GState;
    $scope.strUtility = $scope.ddlUtility;
    //redraw table on button click
    $scope.dtInstanceNonInvProduct.DataTable.draw();

}  
$scope.dtOptions = DTOptionsBuilder.newOptions().withOption('ajax', {
    url: AppConfig.PrefixURL + "/App/GetMPFilter",
    type: "POST",
    data: JSON.stringify({ strZone: $scope.strZone, strUtility: $scope.strUtility }),
})
.withPaginationType('full_numbers')
.withDisplayLength(10);
$scope.dtColumns = [
    DTColumnBuilder.newColumn(null, '').renderWith(function (data, type, full) {
        return '<input type="checkbox" class="check" data-object-id="' + full.objectid + '">'
    }),
    DTColumnBuilder.newColumn("MAINTENANCEZONENAME", "MAINTENANCEZONENAME"),
    DTColumnBuilder.newColumn("MAINTENANCEZONECODE", "MAINTENANCEZONECODE")
]

$scope.dtInstanceNonInvProduct = {};
})


0 commentaires