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

0

У меня есть переменные options в контроллере. Я использую директиву ng-sortable которая создает внутреннюю область видимости. Мой html выглядит так:

<ul as-sortable ng-model="list">
  <li ng-repeat="item in list" as-sortable-item>
    <i as-sortable-item-handle></i>
    {{ options.text }}
  </li>
</ul>

Когда я удаляю as-sortable, я могу увидеть options.text, потому что он ищет его в правильной области. Но как бросить его в эту новую область?

ОБНОВИТЬ:

$ parent. $ parent.options.text дает мне свою переменную. Но это выглядит уродливо. Есть ли лучший способ (чтобы избежать вызова $parent)?

Теги:

2 ответа

0

Вместо того чтобы попытаться, чтобы ребенок прочитал свою родительскую область, подумайте о том, чтобы родительский пароль передал необходимые данные до ребенка.

(Следующие могут быть не совсем правильными, так как я не уверен, откуда вы получаете options.text, но я надеюсь, что эта идея достаточно ясна :)

<ul as-sortable ng-model="list">
  <li ng-repeat="item in list" as-sortable-item>
    <i as-sortable-item-handle myoptions="{{options.text}}"></i>
      {{ myoptions }}
  </li>
</ul>

.directive('asSortableItemHandle', function () {
    return {
        scope: {
            myoptions: '@'
        }
        //...etcetera
    };
})
  • 0
    К сожалению, это сторонняя директива
  • 0
    В таком случае, вероятно, лучше использовать оверлейный контроллер, предложенный @ jideobi-benedine-ofomah.
0

try '$ scope.parentCtrlAsName', тогда предполагается, что родительский контроллер userCtrl в дочернем контроллере попробует:

var parent = $scope.userCtrl; 

$ scope.userCtrl дает вам доступ к области родительского контроллера.

  • 0
    Он ищет переменную userCtrl в текущей области видимости.
  • 0
    Теперь вы можете вызвать userCtrl.parentCtrlVariable

Ещё вопросы

Сообщество Overcoder
Наверх
Меню