在我的控制器中,我指定:
$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}}
一样使用它。
通常,是否可以从模板中分配临时变量?我不需要任何数据绑定,我只需要它们来生成模板然后它们就可以永远消失
答案 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] ) }}