Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法在角度中的$scope中设置值?_Javascript_Angularjs_Angularjs Scope - Fatal编程技术网

Javascript 无法在角度中的$scope中设置值?

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

我正在关注Lynda.com上关于AngularJS基本培训的教程

我的部分索引文件如下所示:

<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>