AngularJS指令中的双向数据绑定不起作用

时间:2015-09-02 11:32:26

标签: angularjs angularjs-directive

我有一个更新绑定属性的指令,但它似乎永远不会更新原始属性!

directives.directive('recordVideo', [function () {
    return {
        scope: {
            showRecordVideo: '='
        },
        controller: "recordVideoController as ctrl",
        templateUrl: '/views/recordvideo.html'
    };
}]);

<record-video data-show-record-video="showAddScheduleDialog"></record-video>

当我在父控制器中设置$scope.showAddScheduleDialog = true时,指令会看到更改并显示对话框。当对话框本身设置其属性$scope.showRecordVideo = false时,父控制器showAddScheduleDialog上的绑定属性永远不会更新!

为什么会这样?

我尝试在父控制器和指令上放置$scope.$watch。这些更改只会传播到指令,永远不会回到控制器!

1 个答案:

答案 0 :(得分:1)

问题是由javascript原型继承(the long answer)引起的。通常的黑客是改变内部的属性:

这保持不变:

scope: {
    showRecordVideo: '='
},

在控制器中:

$scope.showRecordVideo = {
    state: true
};

在模态中:

$scope.showRecordVideo.state = false;