Javascript 无法在角度中的$scope中设置值?
我正在关注Lynda.com上关于AngularJS基本培训的教程 我的部分索引文件如下所示:Javascript 无法在角度中的$scope中设置值?,javascript,angularjs,angularjs-scope,Javascript,Angularjs,Angularjs Scope,我正在关注Lynda.com上关于AngularJS基本培训的教程 我的部分索引文件如下所示: <div class="container" ng-controller="AppCtrl"> <h1>AngulAir</h1> <ul class="nav nav-pills"> <li role="presentation" ng-class="destinationsActive"><a hre
<div class="container" ng-controller="AppCtrl">
<h1>AngulAir</h1>
<ul class="nav nav-pills">
<li role="presentation" ng-class="destinationsActive"><a href="#/" ng-click="setActive(destinations)">Destinations</a></li>
<li role="presentation" ng-class="flightsActive"><a href="#/flights" ng-click="setActive(flights)">Flights</a></li>
<li role="presentation" ng-class="reservationsActive"><a href="#/reservations" ng-click="setActive(reservations)">Reservations</a></li>
</ul>
<div ng-view>
</div>
<p>{{ flightsActive }}</p>
</div>
现在问题很简单。函数应以类型为例“destinations”并在其上附加“Active”,并将范围变量“destinationsActive”设置为Active,这反过来应反映在li标记的ng class指令中,并且链接应处于活动状态
我试图插入警报('hello')代码>将其设置为激活状态后,将触发。这意味着函数确实被调用了。但是当我发出警报($scope.destinationsActive)时代码>它给我一个空白警报,而它应该给我活动作为值
我没有关注练习文件,我觉得可能是因为教程比较老,所以框架可能会有变化。我在教程中已经遇到过这样的问题。不管怎样,我做错了什么?在ng click
指令中,您将参数作为变量而不是字符串传递
ng-click="setActive(destinations)"
将传入未定义的$scope.destinations
的值。尝试传入一个字符串,即:
ng-click="setActive('destinations')"
注意单引号我建议您以更语义的方式考虑模型绑定。例如,使用复选框代替链接,并将复选框值设置为ng model,改为范围变量
<input type="checkbox" ng-model="destinations">
<input type="checkbox" ng-model="flights">
<input type="checkbox" ng-model="reservations">
然后使用模型来反映其余的更改(这是对原始问题的回答,您必须在括号中指定类名和条件:
<li ng-class="{ destinationsActive: destinations }">
您需要在html javascript函数调用中的参数周围加上括号
<a href="#/" ng-click="setActive('destinations')">Destinations</a>
下面是一个工作示例:在ng click中以字符串形式传递参数
工作代码:http://jsfiddle.net/Virbhadrasinh/cLsLfkjm/
应该输入字符串吗?setActive('flights')
Wow.这是我一整天做的最愚蠢的事。:)现在很有魅力。谢谢。使用Angular Batarang Chrome Extension调试您的范围值我一定会尝试的。非常感谢。
<a href="#/" ng-click="setActive('destinations')">Destinations</a>