2016-03-29 3 views
0

Этот контент вытягивается из Firebase, поэтому он не задан (он динамический).Создание модели внутри 2 нг-повторов, доступных в любом месте

{{inputs.field[field.$id]}} 
<div ng-repeat="field in fields | filter:{fieldID:field.$id}"> 
    {{field.label}} 
    <div ng-repeat="choice in choices | filter:{fieldID:field.$id}"> 
     <input type="text" ng-model="inputs.field[field.$id]"> 
     {{inputs.field[field.$id]}} 
    </div> 
</div> 

Если вы заметили, есть 2 места, которые я пытаюсь отобразить inputs.field[field.$id] нг-модель, внутри нг-повтора и за его пределами, оно отображалось правильно внутри, но ничего не показывает снаружи.

Я попробовал $parent вызов, но работал только один уровень (например: $parent.inputs.field[field.$id]) Мне нужен способ, чтобы сделать внутренние переменные доступными везде (неограниченные уровни вверх) и доступ к одним и тем же именем переменной (еще и уникальный) ,

+0

вы можете использовать $ индекса – YOU

+0

Я попытался '$ index.inputs.field [поле. $ ID]' и он не появлялся в любом месте, к сожалению, – Jordash

ответ

0

Мое понимание состоит в том, что элементы, определенные в области ng-repeat, не будут доступны за пределами области видимости, аналогичной тому, как переменные, определенные в цикле, не будут доступны за пределами цикла. Вы по существу пытаетесь это сделать:

for (R in Looper) { 
    //do something 
} 

alert(R); 

На боковой ноте вы можете связать $ parent.

1

Объявление переменной на уровне контроллера в вашей JS.

Предположим, у вас есть FireBaseCtrl, тогда сначала определите $scope.inputs = {}.

И в вашем использовании вида FireBaseCtrl.inputs.field[field.$id]

+0

ли FireBaseCtrl имени контроллер? – Jordash

+0

FireBaseCtrl - ваш контроллерА (или вы можете сказать псевдоним своего контроллера) – atinder