2017-03-21 39 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'; 
}); 

我我期待將'世界'這個詞改爲'約翰',但是當我在這個單元格上時,沒有什麼會發生。

我在下面發佈plnkr以顯示問題。 我在做什麼錯了?我錯過了什麼? AngularJS 1.5.x plnkr使用的問題是不是ng-mouseenter<td>?請注意,ng-repeat不是一個問題 - 當我手動添加新行時,這也不起作用。

http://plnkr.co/edit/x1peSJyc50yqa1AM73GZ

回答

1

其實我有一個同樣的問題,我避免使用普通的範圍變量這樣$scope.name ,它可能會產生一些問題。所以在上面的plunker中,聲明一個像這樣的作用域對象$scope.name = {firstName: 'World'}而不是普通的作用域變量。然後在html中使用這個ng-mouseenter="name.firstName='John';",它應該與Hello {{name.firstName}}一起工作。

+0

親愛的Santhi - 哇。當我改變成一個結構的時候。有點沮喪!我仍然懷疑*爲什麼*。這是AngularJS的bug ....?非常感謝您的回覆。 – Grzegorz

+1

嗨@Grzegorz,對於遲到的抱歉,使用點符號(意味着對象)始終是首選方法。請在這裏http://stackoverflow.com/questions/12618342/ng-model-does-not-update-controller-value中逐個檢查答案,你會得到很好的理解。 – Sam

4

它實際上是工作,你只是還沒有在您的$scope定義alert

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

添加此plunker爲完整性http://plnkr.co/edit/k45D8rJfrPrXImDdZatc – jorgonor

+0

好吧,我期待的JavaScript'alert'被使用。簡單替換「x = 10」並顯示「x」怎麼樣?其實這對我不起作用,所以我用'alert'替換了它。 PS。我會更新我的原始輸入,但感謝您的快速響應! – Grzegorz

相關問題