Angularjs 如何使用一个控制器在同一视图上组织两个表
我有一页有两张桌子。我需要对两个表进行一些操作,在外部触发:视图控制器中的一些函数 所以,两个表都有相同的方法和变量,我应该在视图控制器中使用按钮和输入重新加载或搜索这两个表。就是这样 我想要的是分离表-我不想调用reloadTable1和reloadTable2,并在作用域中使用table1Data和table2Data来呈现它 第一个想法是为每个表创建服务。但问题是数据渲染,当我只使用变量来渲染它时。 以下是示例:不是很相关,但问题是:为什么它不起作用?我知道解决方法-使用访问器,但我真的不想为每个变量创建函数我想对2个服务使用同一个类,但有一个参数不同 第二个想法要使用3个控制器:父控制器和每个表1个控制器,请使用$scope.$broadcast重新加载表。但我真的不喜欢这个想法:它使用事件(我认为在这种情况下使用它不是一个好主意),并且它将使用额外的控制器。另外,我认为在这里使用服务是个好主意Angularjs 如何使用一个控制器在同一视图上组织两个表,angularjs,architecture,angularjs-scope,Angularjs,Architecture,Angularjs Scope,我有一页有两张桌子。我需要对两个表进行一些操作,在外部触发:视图控制器中的一些函数 所以,两个表都有相同的方法和变量,我应该在视图控制器中使用按钮和输入重新加载或搜索这两个表。就是这样 我想要的是分离表-我不想调用reloadTable1和reloadTable2,并在作用域中使用table1Data和table2Data来呈现它 第一个想法是为每个表创建服务。但问题是数据渲染,当我只使用变量来渲染它时。 以下是示例:不是很相关,但问题是:为什么它不起作用?我知道解决方法-使用访问器,但我真的不
有什么建议吗?如果我需要在控制器之间共享数据,我通常会使用服务 例如:
<div ng-controller="main">
{{service.data | json }}
<button ng-click="service.query()">refresh data</button>
</div>
<div ng-controller="controller2">
{{service.data | json }}
</div>
您还可以使用$scope.$broadcast
。或者,如果要从服务内部生成事件,请使用$rootScope.$broadcast
(需要注入$rootScope)
app.controller('controller1', function($scope, myservice) {
$scope.service = myservice;
});
app.controller('controller2', function($scope, myservice) {
$scope.service = myservice;
});
app.service('myservice', function() {
return {
data: [],
query: function() {
for (var i in [1, 2, 3]) {
this.data.push(Math.floor((Math.random() * 100) + 1));
}
}
}
});