gpt4 book ai didi

javascript - ng-mouseover 不起作用

转载 作者:行者123 更新时间:2023-12-02 15:25:19 26 4
gpt4 key购买 nike

我刚刚开始学习 Angular。现在我正在尝试实现一个 ng-repeat div,它是从集合中填充的。我还想实现一个 mouseOver 函数,当我将鼠标悬停在其中一个元素上时,该函数会更改段落中的文本。

<!DOCTYPE html>
<html ng-app="MyApp">
<head>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<script type="text/javascript">

var app = angular.module('MyApp', []);

app.controller('RezeptController', function ($scope) {
this.rezepte = rezeptCollection;

this.mouseOverElement = function (element) {
this.msg = "Mouse Over: " + element.name;
}

});

var rezeptCollection = [
{name: 'Okroshka', herkunft: 'Russland'},
{name: 'Sushi', herkunft: 'Japan'}
];

</script>
<title></title>
<meta charset="utf-8" />
</head>
<body class="container" ng-controller="RezeptController as rezepte">
<div ng-repeat="rezept in rezepte.rezepte" >
<div ng-mouseover="mouseOverElement(element)">
{{rezept.name}}
</div>
</div>
<p>{{ msg }}</p>
</body>
</html>

这段代码确实完成了显示元素的工作。不幸的是 mouseOverElement 没有触发。

我必须承认我并没有完全理解范围的概念。所以我尝试的是将 app.controller 定义更改为:

        app.controller('RezeptController', function ($scope) {
$scope.rezepte = rezeptCollection;

$scope.mouseOverElement = function (element) {
$scope.msg = "Mouse Over: " + element.name;
}
});

这并不能解决问题,而且项目根本不显示。请帮助我理解我在这里缺少什么。

最佳答案

我相信您的问题源于您正在使用 "RezeptController as rezepte"表示法,这是一个很好的实践,但是您在访问该范围内的事物的方式上不一致。

您需要确保在任何作用域变量或函数调用前添加 rezepte. 前缀。消除 this 中的困惑也是一个很好的做法。将其别名为 rezepte在你的 Controller 中:

<!DOCTYPE html>
<html ng-app="MyApp">
<head>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<script type="text/javascript">

var app = angular.module('MyApp', []);

app.controller('RezeptController', function ($scope) {
var rezepte = this;
rezepte.rezepte = rezeptCollection;

rezepte.mouseOverElement = function (element) {
rezepte.msg = "Mouse Over: " + element.name;
}

});

var rezeptCollection = [
{name: 'Okroshka', herkunft: 'Russland'},
{name: 'Sushi', herkunft: 'Japan'}
];

</script>
<title></title>
<meta charset="utf-8" />
</head>
<body class="container" ng-controller="RezeptController as rezepte">
<div ng-repeat="rezept in rezepte.rezepte" >
<div ng-mouseover="rezepte.mouseOverElement(rezept)">
{{rezept.name}}
</div>
</div>
<p>{{ rezepte.msg }}</p>
</body>
</html>

关于javascript - ng-mouseover 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33741001/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com