Ярлыки переменных $scope в шаблонах AngularJs

В моем контроллере я назначаю:

$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 ответа

Решение

Вы можете сделать это в контроллере, как здесь: 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>

Да, это возможно с использованием синтаксиса, как

{{ 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] ) }}

Вы могли бы использовать ngInit: https://docs.angularjs.org/api/ng/directive/ngInit

Хотя кажется, что использование его вне ngRepeat неодобрительно.

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

Я не проверял это таким образом, но это самое близкое, что я могу придумать, которое может решить вашу проблему.

Другие вопросы по тегам