2017-03-21 4 views
0

以下の例は、(前の例の応答の正しいsp00m後に編集)非常に簡単である:なぜこの<td ng-mouseenter = "name = 'John'">は機能しませんか?

index.htmlを:(一部)

<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 「世界」の言葉が「ジョン」に変わることを期待していますが、私が細胞にマウスを乗せているときは何も起こりません。

私はこの問題を示すために以下のplnkrを投稿しています。 何が間違っているのですか?私は何が欠けていますか? <td>ng-mouseenterを処理しないAngularJS 1.5.x plnkrが使用している問題がありますか? ng-repeatは問題ではないことに注意してください。手動で新しい行を置くと、これは動作しません。

http://plnkr.co/edit/x1peSJyc50yqa1AM73GZ

答えて

1

は、実際に私は同じ問題を抱えていた、私はこの$scope.nameのようなプレーンなスコープ変数を使用することを避けますそれはいくつかの問題を引き起こすかもしれません。だから、上記のプランナーでは、スコープオブジェクトの代わりに$scope.name = {firstName: 'World'}のようなものを宣言してください。次に、htmlでこのng-mouseenter="name.firstName='John';"を使用し、これはHello {{name.firstName}}と一緒に動作するはずです。

+0

親愛なるSanthi - うわー。私が構造体に変わったとき、それは機能します。ちょっとフラストレーション!私はまだ*なぜ*疑問に思う。これはAngularJSのバグですか?あなたのお返事ありがとうございました。 – Grzegorz

+1

こんにちは@Grzegorz、遅く応答して申し訳ありませんが、ドット表記法(オブジェクトを意味する)を使用することが常に好ましい方法です。ここで回答を一つ一つ確認してください。http://stackoverflow.com/questions/12618342/ng-model-does-not-update-controller-value、あなたは良い理解を得るでしょう。 – Sam

4

これは、実際に働いているあなたは自分の$scopealertを定義していない、:

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

完全性のためにこのプランナーを追加http://plnkr.co/edit/k45D8rJfrPrXImDdZatc – jorgonor

+0

さて、私は、javascriptの 'alert'が使用されることを期待していました。 '' x = 10 ''と 'x'を単純に置き換えるとどうでしょうか?実際にはこれは私のためには機能しないので、私はそれを「警告」と置き換えました。 PS。私はオリジナルの入力を更新しますが、迅速な対応に感謝します! – Grzegorz

関連する問題