2015-09-29 3 views
1

У меня есть контроллер с $scope.colorHex значенияAngularJS директива в директиве не настройка значения области

Например, у меня есть директиву colorpickerTooltip и в шаблоне я вызвать другую директиву: <colorpicker ng-model="colorHex"></colorpicker>

затем в секунде директива (colorpicker) настроить значение контроллера:

scope.colorHex = '#cecece';

, а затем во втором ди rective Я вызываю метод scope.doIt(), но что-то не так:

my $scope значение не обновляется! Но почему, может быть, из-за моей двухуровневой директивы?

Как настроить значение переменной контроллера?

+0

Не могли бы вы поставить свой код в plunker? –

+0

Возможный дубликат [angularjs Доступ к родительской области с дочернего контроллера] (http://stackoverflow.com/questions/21453697/angularjs-access-parent-scope-from-child-controller) –

ответ

0

Да, это проблема двухступенчатой ​​директивы уровня. Пожалуйста, ознакомьтесь с https://github.com/angular/angular.js/wiki/Understanding-Scopes

Определить colorHex в контроллере как объект, как:

$scope.dataStore = {}; 
$scope.dataStore.colorHex = '#cecece'; 

Затем измените в первой директивы, как:

<colorpicker ng-model="dataStore.colorHex"></colorpicker> 

А потом использовать его в своей второй директиве, чтобы обновить в doIt метод:

$scope.doIt = function() { 
    $scope.dataStore.colorHex = '#fff'; 
} 
0

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

$scope.color= {hex=undefined}; 

и изменить его во внутреннем объеме

$scopescope.color.hex = '#cecece'; 

это поможет предотвратить этот stuation

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