2017-03-21 2 views
0

Das folgende Beispiel ist extrem einfach (edited nach sp00m korrekt für das vorherige Beispiel response):Warum funktioniert das <td ng-mouseenter = "name = 'John'"> nicht?

index.html: (Teil)

<table> 
    <tr ng-repeat="r in [1,2,3]"> 
    <td ng-repeat="c in [1,2]" ng-mouseenter="name='John'"> 
     [{{r}},{{c}}] 
    </td> 
    </tr> 
</table> 
Hello {{name}}! 

app.js:

app.controller('MainCtrl', function($scope) { 
    $scope.name = 'World'; 
}); 

I Ich erwarte, dass das Wort "Welt" in "John" geändert wird, aber nichts passiert, wenn ich über die Zelle mische.

Ich poste pnrkr unten, um das Problem zu zeigen. Was mache ich falsch ?! Was vermisse ich? Ist das Problem mit AngularJS 1.5.x PLNKR verwendet, die ng-mouseenter in <td> nicht behandelt? Beachten Sie, dass ng-repeat kein Problem ist - wenn ich manuell eine neue Zeile einstelle, funktioniert das auch nicht.

http://plnkr.co/edit/x1peSJyc50yqa1AM73GZ

Antwort

1

Eigentlich hatte ich ein gleiches Problem, ich vermeiden wie diese $scope.name die Ebene Umfang Variablen verwenden Es kann einige Probleme verursachen. Deklarieren Sie also im oben genannten Plott ein Scope-Objekt, so etwas wie $scope.name = {firstName: 'World'} statt der reinen Scope-Variable. Dann in HTML verwenden Sie diese ng-mouseenter="name.firstName='John';", und es sollte mit dieser Hello {{name.firstName}} arbeiten.

+0

Lieber Santhi - wow. Als ich zu einer Struktur wechselte, funktionierte es. Ein bisschen frustrierend! Ich frage mich immer noch * warum *. Ist das der AngularJS Bug ....? Vielen Dank für Ihre Antwort. – Grzegorz

+1

Hi @Grzegorz, tut mir leid für die späte Antwort, die Verwendung von Punktnotation (bedeutet Objekt) ist immer bevorzugte Ansatz. Bitte überprüfen Sie die Antworten eins nach dem anderen hier http://stackoverflow.com/questions/12618342/ng-model-does-not-update-controller-value, Sie werden ein gutes Verständnis bekommen. – Sam

4

Es ist tatsächlich arbeiten, Sie haben festgelegt, nur nicht alert in Ihrem $scope:

$scope.alert = function (...) { ... }; 
+0

Fügen Sie diesen Plunker der Vollständigkeit halber http://plnkr.co/edit/k45D8rJfrPrXImDdZatc – jorgonor

+0

Okay, ich habe erwartet, dass das Javascript 'alert' verwendet wird. Was ist mit der einfachen Substitution von "x = 10" und Anzeige von "x"? Eigentlich funktioniert das nicht für mich, also habe ich das durch die 'alert' ersetzt. PS. Ich werde meine ursprüngliche Eingabe aktualisieren, aber danke für die schnelle Antwort! – Grzegorz