2016-07-05 10 views
0

Нажмите на родительскую кнопку, чтобы изменить также дочернюю, но дочернюю кнопку нет. Мне нужно изменить это поведение, изолируя области с любыми хаками или другим способом.Как изолировать область дочернего контроллера от области родительского контроллера без изменения вида?

Контроллер ребенка не наследуется от родительского контроллера и должен иметь свою собственную область действия!

angular 
 
    .module('app', []) 
 
    .controller('ParentCtrl', function() {}) 
 
    .controller('ChildCtrl', function() {})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app=app> 
 
    <div ng-controller=ParentCtrl> 
 
    <button ng-click="text='clicked'"> 
 
     {{text || 'parent'}} 
 
    </button> 
 
    <div ng-controller=ChildCtrl> 
 
     <button ng-click="text='clicked'"> 
 
     {{text || 'child'}} 
 
     </button> 
 
    </div> 
 
    </div> 
 
</div>

https://jsfiddle.net/nizami/oLwbktz9/

+0

, что именно вы хотите? –

+0

Я хочу, чтобы каждый контроллер имел свой собственный объем. Контроллер ребенка не наследует от родительского контроллера –

+0

Спасибо! Но этого я не хочу. Я хочу использовать одно и то же имя свойств. –

ответ

1
angular 
    .module('app', []) 
    .controller('ParentCtrl', ['$scope', function($scope) { 
    $scope.text = null; 
    }]) 
    .controller('ChildCtrl', ['$scope', function($scope) { 
    $scope.text = null; 
    }]) 
+0

Возможно ли предоставить более полный пример, это непонятное поведение для меня? –

+0

Эта ссылка не работает. Я попробую еще раз ... –

+0

Здесь вы найдете: https://jsfiddle.net/qt51x49L/1/ –

0

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

<div ng-controller=ParentCtrl> 
    <button ng-click="text='clicked'"> 
    {{text || 'parent'}} 
    </button> 
    <div ng-controller=ChildCtrl> 
    <button ng-click="text2='clicked'"> 
     {{text2 || 'child'}} 
    </button> 
    </div> 
</div> 
+0

Спасибо. Да, именно то, что происходит в директивах, и мне нужно подобное поведение только с контроллерами. –

1

Проверить обновленные plunkr..I надеюсь, и будет получить ур ответ

https://jsfiddle.net/oLwbktz9/6/

<div ng-controller=ParentCtrl> 
    <button ng-click="text='clicked'"> 
    {{text || 'parent'}} 
    </button> 
    </div> 
    <div ng-controller=ChildCtrl> 
    <button ng-click="text='clicked'"> 
     {{text || 'child'}} 
    </button> 
</div> 
+0

Спасибо. Но я не могу изменить мнение. Не так в крайних случаях –

+0

Вы не хотели, чтобы области перекрывались ... правильно ..? –

+0

Да. Я хочу, чтобы все области были изолированы друг от друга. –

Смежные вопросы