У меня есть переменные 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
)?
Вместо того чтобы попытаться, чтобы ребенок прочитал свою родительскую область, подумайте о том, чтобы родительский пароль передал необходимые данные до ребенка.
(Следующие могут быть не совсем правильными, так как я не уверен, откуда вы получаете 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
};
})
try '$ scope.parentCtrlAsName', тогда предполагается, что родительский контроллер userCtrl в дочернем контроллере попробует:
var parent = $scope.userCtrl;
$ scope.userCtrl дает вам доступ к области родительского контроллера.
userCtrl
в текущей области видимости.