javascript - 如何提醒 View 显示数据

标签 javascript angularjs asp.net-mvc asp.net-mvc-4 razor

我是 AngularJS 的新手。我刚刚开始创建一个示例应用程序。请帮助我提出您的建议。

下面是我的示例应用程序。

Sample application

以下是创建的页面:

  1. 页面 --> Notes.cshtml/notesController.js
  2. NotesList --> NotesList.cshtml/notesListController.js
  3. AddNote --> AddNote.cshtml/addNotecontroller.js
  4. ViewNote --> ViewNote.cshtml/viewNoteController.js

当用户从注释列表中选择注释时,我想在右侧加载详细信息(在 ViewNote.cshtml 中)。请注意,我一次只能显示“添加注释”或“查看注释”。因此,我使用 ng-show 来显示/隐藏相应的部分控件。

我的问题:

  1. 当我单击注释列表中的注释时,我会调用服务器以使用 service.js 获取注释详细信息。据我了解,黑白 Controller 共享数据的最佳方法是使用服务。因此,我将获取的数据保留在服务对象中。
  2. 现在,我想要intimate view.cshtml加载获取的数据。
  3. 我应该在 service.js 中使用 $emit 或 $broadcast 来亲密 ViewNoteController.js 吗?
  4. 我已将服务对象注入(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/

相关文章:

php - 自动刷新 div 内容并立即向下滚动?

javascript - Angular .js :68 Uncaught Error: [$injector:unpr] Unknown provider: pendingRequestsProvider <- pendingRequests <- $http <- $templateRequest <- $compile

javascript - $resource 上的 Angular 自定义方法与 .then() 函数导致错误

jQuery AJAX 请求 Controller 或服务作为代理?

asp.net-mvc - 从 Azure 网站取消发布 MVC 4 项目

asp.net-mvc - ActionLink 显示 URL 中的参数而不是查询字符串?

javascript - ctrl+z后node js还在监听端口

javascript - 在两个 JavaScript 数组中查找元素并将每个数组存储为不同的元素

AngularJS 将变量添加到作用域问题

javascript - touchmove 事件意外触发 onload