为什么这不起作用?

时间:2017-03-21 15:20:56

标签: javascript angularjs

以下示例非常简单(在sp00m更正前一个示例响应后编辑):

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';
});

我期待世界&#39;这个词改成了约翰&#39;被显示但当我将鼠标移到牢房时没有任何事情发生。

我在下面张贴plnkr来显示问题。 我究竟做错了什么?!我错过了什么? AngularJS 1.5.x plnkr的问题是否在ng-mouseenter中无法处理<td>?请注意,ng-repeat不是问题 - 当我手动添加新行时,这也不起作用。

http://plnkr.co/edit/x1peSJyc50yqa1AM73GZ

2 个答案:

答案 0 :(得分:4)

它实际上正在运作,您只是在alert中未定义$scope

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

答案 1 :(得分:1)

实际上我有同样的问题,我避免使用像$scope.name这样的普通范围变量,它可能会产生一些问题。所以在上面的plunker中,声明一个范围对象,就像这个$scope.name = {firstName: 'World'}而不是普通的范围变量。然后在html中使用此ng-mouseenter="name.firstName='John';",它应该使用此Hello {{name.firstName}}