2015-04-15 2 views
5

EDITDer Code ist alles korrekt, das Problem war wegen der Einbeziehung 'ngTouch', siehe meine eigene Antwort unten.AngularJS ng-klicken funktioniert nicht, aber ng-change ist, wenn Sie die gleiche Funktion aufrufen

Ich mache hier wahrscheinlich einen dummen Fehler, aber für das Leben von mir kann ich es nicht finden. Ich habe dieses Stück Markup, die mit einem Controller korrekt verdrahtet ist:

<input type="text" ng-change="doStuff()" ng-model="stuff"/> 
<button ng-click="doStuff()">doStuff</button> 

Der Controller-Code:

console.log('Hi from controller'); 
$scope.stuff = "something"; 
$scope.doStuff = function() { 
    alert('doing stuff'); 
} 

Das Problem ist, es passiert nichts, wenn ich auf die Schaltfläche klicken. Wenn ich das Eingabefeld ändere, bekomme ich die Warnung, also funktioniert ng-change, aber ng-click nicht. Lassen Sie mich wissen, wenn dies nicht genug Informationen ist, aber ich würde nicht wissen, was sonst noch zu bieten, und die allgemeine Einrichtung scheint gut zu funktionieren ...

Der Rest des HTML enthält keine Angular-Richtlinien, und es ist, wie dies in myModule.config geladen:

$stateProvider 
    .state('stuff', { 
      templateUrl: 'pages/stuff.html', 
      url: '/stuff', 
      controller: 'StuffCtrl' 
    }) 

und die Steuerung wie folgt definiert ist:

angular.module('myModule') 
    .controller('StuffCtrl', function ($scope) { 
     // above code 
    }); 
+0

Versuchen Sie, die Schaltfläche (mit dem Standardtyp 'submit') in eine einfache Schaltfläche mit'

+0

Das sollte funktionieren, können Sie einen größeren Snipper der HTML-Datei und Dein Controllercode? –

+0

Funktioniert hier - http://jsfiddle.net/HB7LU/12867/ –

Antwort

5

es stellte sich heraus, dass das Problem mit einer anderen Abhängigkeit war ‚ngTouch‘. Ich habe es nicht benutzt, aber es war immer noch geladen. Mein Modul war nicht einmal davon abhängig. (Ich verwende diese Admin-Site-Vorlage von hier: http://startangular.com/product/sb-admin-angular-theme/). Nach dem Entfernen des ngTouch funktionierte es wie erwartet. Ich werde dies auch als Bug für beide Projekte einreichen ... Danke für Ihre Hilfe!

+0

Wow, ich habe gerade zwei Stunden damit verbracht, das gleiche Problem zu beheben, bevor ich deine Antwort gefunden habe! Ich hätte das nie herausgefunden, danke !! – Defcronyke

+1

Danke für das Posten. Hatte hier meinen Kopf an die Wand geschlagen. – tpie

+0

Vielen Dank für die Veröffentlichung Ihres Ergebnisses. Ich habe ein paar Stunden verschwendet - und ein paar Minuten, um diese verdammteTouch-Abhängigkeit in den lazy-loaded-Modulen zu finden ... – karlis

Verwandte Themen