Почему вложенные фигурные скобки в angular не работают?? Что такое альтернативное решение для него?

У меня есть объект json

"blog1":{ 
"blogid":"1", 
"body":"sometext"
  "IMG":"URL of image"
    }

Я пытаюсь получить доступ к этому элементу IMG объектов, чтобы установить его в качестве фонового IMG для div, используя стиль ng, как показано ниже.

<Div ng-controller="controller as ctrl">
       <div ng-style="background-image:URL('{{ctrl.object.blog{{ctrl.blogId}}.IMG}}');" >

Мой контроллер выглядит так (грубо)

App.controller('controller', function (){
this.object= $firebaseObject();

this.blogId= $routeParams.blogId;

});

Обратите внимание, что div со стилем ng содержит вложенное угловое выражение, и они не оцениваются. Есть ли другое решение для достижения этого.

Примечание: это одностраничное приложение, поэтому, согласно идентификатору блога в URL-адресе, я хочу отобразить изображение. Я использую угловую маршрутизацию для SPA.


person user7459550    schedule 23.01.2017    source источник
comment
Вам не нужно использовать фигурные скобки, вы используете [ ]. {{object.blog[идентификатор_блога].IMG}}   -  person yBrodsky    schedule 23.01.2017
comment
Я не должен упоминать ctrl.??   -  person user7459550    schedule 23.01.2017
comment
Я не знаю, как вы определили свой контроллер в представлении. нг-контроллер = ctrl?   -  person yBrodsky    schedule 23.01.2017
comment
Да, я определил его как контроллер как ctrl ... Код не совсем такой же. Вы понимаете, что я говорю.   -  person user7459550    schedule 23.01.2017
comment
Тогда ваше определение контроллера неверно. Если у вас есть ng-controller=controller как ctrl, тогда ваш App.controller должен соответствовать этому имени. Но да, вам придется поставить ctrl.whatever для печати переменных.   -  person yBrodsky    schedule 23.01.2017
comment
Это соответствует, имя контроллера такое же, вот что я говорю, это грубая идея, данная о моем контроллере, о котором идет речь.   -  person user7459550    schedule 23.01.2017
comment
Я обновил свой ответ, внизу вы можете найти свой случай.   -  person yBrodsky    schedule 23.01.2017
comment
А что, если я использую контроллер As   -  person user7459550    schedule 24.01.2017
comment
Спасибо, завтра попробую, если получится, приму ваш ответ. Спасибо за ваше время, приятель   -  person user7459550    schedule 24.01.2017
comment
Если вы используете контроллер As, вы должны использовать его перед своими переменными. Смотрите, что бы вы ни делали сейчас для печати переменных, будь то ctrl.var или просто var, делайте это, но используя другую переменную как индекс ctrl.var[index] или var[index].   -  person yBrodsky    schedule 24.01.2017
comment
Спасибо за ваше время, я сделал кое-что хитрое, я проанализировал $firebaseObject() [формат Json] в самом контроллере, извлек конкретное свойство и присвоил его переменной, а затем использовал эту переменную в элементе HTML. :) могу я добавить вас на facebook ? Пожалуйста, предоставьте мне идентификатор электронной почты   -  person user7459550    schedule 24.01.2017
comment
У меня нет ФБ. Я не знаю, почему ты так поступаешь. В основном вы пытаетесь добиться следующего: jsfiddle.net/ADukg/9405   -  person yBrodsky    schedule 24.01.2017


Ответы (1)


Чтобы использовать переменную в качестве индекса, вы делаете следующее

Контроллер:

$scope.myVar = 'something';
$scope.myObj = {something: {img: 'something else'}};

Вид:

{{myObj[myVar].img}}

В твоем случае:

{{ctrl.object.blog[ctrl.blogId].IMG}}
person yBrodsky    schedule 23.01.2017