我有一个控制器,值$scope.colorHex
例如,我有指令colorpickerTooltip
,在模板中我调用另一个指令:<colorpicker ng-model="colorHex"></colorpicker>
然后在第二个指令(colorpicker
)中设置控制器的值:
scope.colorHex = '#cecece';
然后在第二个指令中我调用方法scope.doIt()
,但是出了点问题:
我的$scope
值未更新!但为什么,也许是因为我的2级指令?
如何设置控制器变量值?
答案 0 :(得分: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';
}
答案 1 :(得分:0)
第二个指令从第一个指令复制值,并在第二个范围内创建一个新对象。 您可以通过使用诸如
之类的客观结构来阻止它$scope.color= {hex=undefined};
并在内部范围内更改
$scopescope.color.hex = '#cecece';
它会阻止这种情况