我有一个更新绑定属性的指令,但它似乎永远不会更新原始属性!
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
。这些更改只会传播到指令,永远不会回到控制器!
答案 0 :(得分:1)
问题是由javascript原型继承(the long answer)引起的。通常的黑客是改变内部的属性:
这保持不变:
scope: {
showRecordVideo: '='
},
在控制器中:
$scope.showRecordVideo = {
state: true
};
在模态中:
$scope.showRecordVideo.state = false;