我是 AngularJS 的新手。我刚刚开始创建一个示例应用程序。请帮助我提出您的建议。
下面是我的示例应用程序。
以下是创建的页面:
- 页面 --> Notes.cshtml/notesController.js
- NotesList --> NotesList.cshtml/notesListController.js
- AddNote --> AddNote.cshtml/addNotecontroller.js
- ViewNote --> ViewNote.cshtml/viewNoteController.js
当用户从注释列表中选择注释时,我想在右侧加载详细信息(在 ViewNote.cshtml 中)。请注意,我一次只能显示“添加注释”或“查看注释”。因此,我使用 ng-show 来显示/隐藏相应的部分控件。
我的问题:
- 当我单击注释列表中的注释时,我会调用服务器以使用 service.js 获取注释详细信息。据我了解,黑白 Controller 共享数据的最佳方法是使用服务。因此,我将获取的数据保留在服务对象中。
- 现在,我想要intimate view.cshtml加载获取的数据。
- 我应该在 service.js 中使用 $emit 或 $broadcast 来亲密 ViewNoteController.js 吗?
- 我已将服务对象注入(inject) ViewNoteController.js
有没有更好的方法来处理这种情况?请提出建议。
最佳答案
您不能在 Angular 服务实例中使用 $scope,因此 $emit 或 $broadcast 将不起作用。
您可以使用以下解决方案:
service.js
this.fetchData = function(url, successHandler, failureHandler) {
$http.get(url).then(function(response) {successHandler(response);}, function() {});
}
notesListController.js
function($scope, $rootScope, service) {
$scope.loadList = function() {
service.fetchData('someurl', fetchDataSuccessHandler, angular.noop);
}
function fetchDataSuccessHandler(response) {
var list = response.data;
$rootScope.$broadcast('load-data', list);
}
}
ViewNoteController.js
$scope.$on('load-data', function(event, list) {
// add the code to load the view
});
关于javascript - 如何提醒 View 显示数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38030038/