AngularJS从范围分配范围变量

时间:2014-05-29 19:06:07

标签: angularjs

在angularJS中,当尝试从另一个范围变量的值分配范围变量时,派生变量的值为空。在这个例子中,我希望有一个汽车的范围参考,以及一个特定的汽车零件(可能会在应用程序的后期更改)。

示例:

$scope.car = Car.get(); //async http service that returns a JSON car object
$scope.selectedCarPart =  $scope.car.brakes;

HTML:

<div>{{car.engine}} - {{selectedCarPart}}</div>

输出:

v8 -

为什么 selectedCarPart 为空?

3 个答案:

答案 0 :(得分:1)

我认为您get来电是异步的,所以当您分配selectedCarPart时,您的$scope.car目前为空,而且还没有brakes。< / p>

您必须等待get调用结束,并在http服务的成功回调中分配生成的JSON汽车对象的值。

答案 1 :(得分:0)

即使 工作,我认为还有更好的方法。

<div>{{car.engine}} - {{car[selectedPartKey]}}</div>

这样,您只需将selectedPartKey的值更改为'brakes'即可。你的方式,如果car的值发生变化,它就不会被反映出来......

答案 2 :(得分:0)

Apercu接受的回答是正确的。您还可以使用更通用的解决方案,即使用$ watch。在这种情况下,你写这个:

$scope.$watch('car',function(newValue) {
  $scope.selectedCarPart = newValue['brakes'];
}, true);

有关$ watch的更多信息,请访问:https://docs.angularjs.org/api/ng/type/ $ rootScope.Scope