在角度js中通知从服务到控制器的更改的最佳实践

时间:2017-05-22 07:06:13

标签: angularjs notifications angularjs-service

我有一个常见的角度服务和多个控制器。我的服务会收到服务器端发生的更改通知。 现在我希望服务通知控制器这个更改,以便我可以更新一些控制器属性。

我在服务中使用$rootscope.$broadcast,在控制器中使用$scope.$on来实现此目的。以这种方式实现它是一种很好的做法。

1 个答案:

答案 0 :(得分:0)

首先,您必须了解我们必须使用$rootscope.broadcast的位置。

您可以直接$rootscope.$broadcast将服务直接inject到控制器中,而不是使用CREATE TABLE [Items]( [ItemId] [int] IDENTITY(1,1) NOT NULL, [ParentId] [int] NULL, [ItemName] [varchar](100) NOT NULL, CONSTRAINT [PK_Items] PRIMARY KEY CLUSTERED ( [ItemId] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO CREATE TABLE [Transactions]( [TransactionId] [int] IDENTITY(1,1) NOT NULL, [ItemId] [int] NOT NULL, [Amount] [money] NOT NULL, CONSTRAINT [PK_Transactions] PRIMARY KEY CLUSTERED ( [TransactionId] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO SET IDENTITY_INSERT [Items] ON GO INSERT [Items] ([ItemId], [ParentId], [ItemName]) VALUES (1, NULL, N'Warehouse') GO INSERT [Items] ([ItemId], [ParentId], [ItemName]) VALUES (3, 1, N'Bin 1') GO INSERT [Items] ([ItemId], [ParentId], [ItemName]) VALUES (4, 1, N'Bin 2') GO INSERT [Items] ([ItemId], [ParentId], [ItemName]) VALUES (5, 3, N'Item 1.1') GO INSERT [Items] ([ItemId], [ParentId], [ItemName]) VALUES (6, 3, N'Item 1.2') GO INSERT [Items] ([ItemId], [ParentId], [ItemName]) VALUES (7, 4, N'Item 2.1') GO INSERT [Items] ([ItemId], [ParentId], [ItemName]) VALUES (8, 4, N'Item 2.2') GO SET IDENTITY_INSERT [Items] OFF GO SET IDENTITY_INSERT [Transactions] ON GO INSERT [Transactions] ([TransactionId], [ItemId], [Amount]) VALUES (1, 5, 10.0000) GO INSERT [Transactions] ([TransactionId], [ItemId], [Amount]) VALUES (2, 5, 10.0000) GO INSERT [Transactions] ([TransactionId], [ItemId], [Amount]) VALUES (3, 6, 10.0000) GO INSERT [Transactions] ([TransactionId], [ItemId], [Amount]) VALUES (4, 6, 10.0000) GO INSERT [Transactions] ([TransactionId], [ItemId], [Amount]) VALUES (5, 4, 10.0000) GO INSERT [Transactions] ([TransactionId], [ItemId], [Amount]) VALUES (6, 7, 10.0000) GO INSERT [Transactions] ([TransactionId], [ItemId], [Amount]) VALUES (7, 7, 10.0000) GO INSERT [Transactions] ([TransactionId], [ItemId], [Amount]) VALUES (8, 8, 10.0000) GO INSERT [Transactions] ([TransactionId], [ItemId], [Amount]) VALUES (9, 8, 10.0000) GO SET IDENTITY_INSERT [Transactions] OFF GO ALTER TABLE [Items] WITH CHECK ADD CONSTRAINT [FK_Items_Items] FOREIGN KEY([ParentId]) REFERENCES [Items] ([ItemId]) GO ALTER TABLE [Items] CHECK CONSTRAINT [FK_Items_Items] GO ALTER TABLE [Transactions] WITH CHECK ADD CONSTRAINT [FK_Transactions_Items] FOREIGN KEY([ItemId]) REFERENCES [Items] ([ItemId]) GO ALTER TABLE [Transactions] CHECK CONSTRAINT [FK_Transactions_Items] GO 控制器初始化时,对服务的更改将反映到控制器中。