【发布时间】:2015-05-27 12:44:46
【问题描述】:
我是 AngularJS 的新手,我正在尝试以“角度方式”而不是使用 jquery 重写我的网页,但我的理解遇到了一些问题。
我的 HTML 是这样的:
<body style="padding-top: 0px;" data-spy="scroll" ng-app="SummerMill">
<section id="intro" class="main style1 dark">
<!-- Header -->
<header ng-controller="MainController" id="header">
<!-- Logo -->
<h1 id="logo">Summer Mill</h1>
<a ng-mouseover="locations()"
style="color:black;text-decoration:initial;"
id="logoii"
href="http://localhost/locations">Locations</a>
<!-- Nav -->
<nav id="nav">
<ul class="nav navbar-nav">
<li ng-repeat="headerLink in headerLinks"><a ng-init="content=headerLink.text" href="#{{content}}">{{content}}</a></li>
</ul>
</nav>
</header>
然后是我的控制器:
app.controller('MainController', ['$scope', function($scope) {
$scope.headerLinks = [
{
text: 'Intro',
alternativeText: 'Arlington'
},
{
text: 'Wholesale',
alternativeText: 'New York'
}
];
$scope.locations = function() {
content = headerLinks.alternativeText;
}
}]);
所以基本上,在悬停时,我希望 <li> 内容发生变化。我知道悬停事件正在被触发,而且是正确的。我得到的错误是 ReferenceError: headerLinks is not defined 这对我来说很奇怪,因为它在控制器本身中,所以我尝试了 content = $scope.headerLinks.alternativeText; 并停止了错误,但我猜 content 在控制器与ng-init 中的content 不同。
这样做的正确方法是什么?也许我想错了。
【问题讨论】:
-
第一:你没有
headerLinks你有$scope.headerLinks,第二:这个变量是数组——不是你想的对象所以它没有alternativeText属性 -
$scope.headerLinks.alternativeText
-
控制器中是否需要此内容 ng-init="content=headerLink.text" ?
-
你能解释一下你真正需要什么吗?
-
我发现是
$scope.headerLinks,但这并没有解决问题,即控制器中的content与ng-init中的content不匹配。
标签: javascript angularjs angularjs-ng-repeat angularjs-ng-init