2015-09-29 74 views
1

我有一個控制器,具有$scope.colorHexAngularJS指令在指令不設置範圍值

例如,我有指令colorpickerTooltip和在模板我調用另一個指令:<colorpicker ng-model="colorHex"></colorpicker>

然後在第二指令(colorpicker)我建立控制器的值:

scope.colorHex = '#cecece';

,然後在第二二rective我打電話給方法scope.doIt(),但出事了:

my $scope value is not updated!但是,爲什麼,也許是因爲我的2級指令?

如何設置控制器變量值?

+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