0

在我的控制器中,我分配:

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

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

4

3 回答 3

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>
于 2014-07-17T16:01:47.367 回答
0

您也许可以使用ngInithttps ://docs.angularjs.org/api/ng/directive/ngInit

尽管似乎不赞成在ngRepeat之外使用它。

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

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

于 2014-07-17T14:42:20.057 回答
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] ) }}

于 2014-07-17T17:48:01.763 回答