我可以在AngularJS中使用一个控制器更新两个视图吗?

时间:2013-08-26 15:10:15

标签: angularjs

是否有可能将两个视图绑定到一个控制器,以便无论数据在何处更改(view1,view2或在模型中),两个视图都会更新?它应该像这个例子一样工作(删除了杂乱)。

<script>
    angular.module('foobar', []).controller('ContentCtrl', ['$scope', function($scope) {
        $scope.content = {'title': 'Foo', 'subtitle': 'Bar', 'text': 'desc'};
    }]);
</script>

<form action="#" ng-controller="ContentCtrl">
    <input type="text" ng-model="content.title">
    <input type="text" ng-model="content.subtitle">
    <textarea ng-model="content.text"></textarea>
</form>

<div ng-controller="ContentCtrl">
    <input type="text" ng-model="content.title">
    <input type="text" ng-model="content.subtitle">
    <textarea ng-model="content.text"></textarea>
</div>

这是一个Plunker:http://plnkr.co/edit/UDs10RhG7mJR8813epwO?p=preview

1 个答案:

答案 0 :(得分:5)

没有理由你不能这样做,但同一个对象必须在两个控制器的范围内。见http://plnkr.co/edit/ILzGCs9AYiPTETE92KTm?p=preview

在原始示例中,每个范围都有自己的对象,因此每个范围都在自己的对象上运行。如果两个作用域共享同一个对象,则每个作用域都在同一个对象上运行,因此一个作用域中的更改将反映在另一个作用域中。