2015-09-02 132 views
0

我有一个更新绑定属性的指令,但它似乎永远不会更新原始属性!指令中的AngularJS双向数据绑定不起作用

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

放一些的jsfiddle帮助。 – Joy

+0

请经过[this](http://jsfiddle.net/HarshMehta/6zf6ndtx/)。你会得到你目前缺少的... – road2victory

回答

1

该问题是由javascript原型继承(the long answer)造成的。通常黑客是改变里面的属性:

此保持不变:

scope: { 
    showRecordVideo: '=' 
}, 

在控制器:

$scope.showRecordVideo = { 
    state: true 
}; 

在模态:

$scope.showRecordVideo.state = false; 
+0

不知道我错过了这一点,谢谢 – Chris