AngularJs模板中的$ scope变量快捷方式

时间:2014-07-17 14:31:24

标签: javascript angularjs angularjs-scope angular-template

在我的控制器中,我指定:

$scope.currentThing.data

在我的模板中有时我需要

currentThing.data.response[0].hello

有时候

currentThing.data.otherStuff[0].goodbye
//or
currentThing.data.anotherThing[0].goodMorning

所以我想知道是否可以直接在模板中为这些变量创建一个快捷方式,例如:

{{response = currentThing.data.response[0]}}

这样我就可以像{{response.hello}}一样使用它。

通常,是否可以从模板中分配临时变量?我不需要任何数据绑定,我只需要它们来生成模板然后它们就可以永远消失

3 个答案:

答案 0 :(得分:2)

你可以在控制器中这样做:http://jsbin.com/moyuhe/1/edit

app.controller('firstCtrl', function($scope){
 $scope.currentThing = {

   data: [

     {response:[
       {hello:1},
       {hello:2}
     ]}
   ]

 };
 $scope.temp = $scope.currentThing.data[0];

});

HTML:

 <div ng-controller="firstCtrl">
  {{temp.response |json }}
      </div>

答案 1 :(得分:0)

您可以使用 ngInit https://docs.angularjs.org/api/ng/directive/ngInit

虽然似乎在 ngRepeat 之外使用它是不受欢迎的。

<div ng-init="myvar = currentThing.data.response[0]">
    <span>{{myvar.hello}}</span>
</div>

我还没有像这样对它进行测试,但这是我能想到的最接近你可以解决问题的方法。

答案 2 :(得分:0)

是的,可以使用

之类的语法
{{ variable = ( expression ) }}

HTML模板中的任何位置(不仅仅是ng-init的建议)。

当您需要多次使用计算变量时,它非常有用 - 每次都不需要计算。

一些例子

<!-- can use it before -->
<p> Calculated value is {{calculated}} </p>

<div ng-repeat=" item in calculated = ( allItems | filter1 | filter2 | filter3 ) ">
   {{item}} 
</div>

<!-- can use it after-->
<p> Calculated value is still {{calculated}} </p>

编辑:所以在你的情况下 {{response = ( currentThing.data.response[0] ) }}