【问题标题】:AngularJS two way data binding in directive not working指令中的AngularJS双向数据绑定不起作用
【发布时间】:2015-09-02 19:42:37
【问题描述】:

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

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 放在父控制器和指令上。更改只会传播到指令,而不会备份到控制器!

【问题讨论】:

  • 放一些 JSFIddle 来帮忙。
  • 请转至this。你会得到你目前所缺少的......

标签: angularjs angularjs-directive


【解决方案1】:

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

这保持不变:

scope: {
    showRecordVideo: '='
},

在控制器中:

$scope.showRecordVideo = {
    state: true
};

在模态中:

$scope.showRecordVideo.state = false;

【讨论】:

    猜你喜欢
    • 2015-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-29
    • 1970-01-01
    • 2013-06-15
    相关资源
    最近更新 更多