AngularJS指令中的指令没有设置作用域值

AngularJS directive in directive is not setting up scope value

本文关键字:指令 设置 作用域 AngularJS      更新时间:2023-09-26

我有一个控制器,$scope.colorHex

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

然后在第二个指令(colorpicker)中我设置了控制器的值:

scope.colorHex = '#cecece';

,然后在第二个指令我调用方法scope.doIt(),但有些事情是错误的:

我的$scope值没有更新!但为什么,也许是因为我的两级指令?

如何设置控制器变量值?

第二个指令复制第一个指令的值,并在第二个作用域中创建一个新对象。您可以通过使用诸如

这样的客观结构来防止它
$scope.color= {hex=undefined};

并在

内部范围内更改它
$scopescope.color.hex = '#cecece';

它将防止这种情况

是的,这是二级指令范围的问题。请阅读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';
}