如何在angularjs中以两页的形式访问一个控制器中存在的数据?

时间:2016-09-08 11:39:27

标签: angularjs node.js mongodb angular-material

我在vm.rslt中有数据toolbar.controller.js,现在我想从toolbar.htmlsharedwishlistdetails.html这两个页面访问该数据。但现在我只在toolbar.html页面获得结果。我在toolbar.module.js创建了第二页的路径并注入了,但我仍然没有得到。请帮我解决这个问题。 该工具栏文件夹包含如下所示的结构

`sharedwishlistdetails.html
 sharedwishlistdetails.scss
 toolbbar.controller.js
 toolbar.html
 toolbar.module.js
 tolbar.scss`

toolbbar.controller.js

(function ()
{
  'use strict';

   angular
    .module('app.toolbar')
    .controller('ToolbarController', ToolbarController);


    function ToolbarController($rootScope, $mdSidenav, msNavFoldService, $translate, $mdToast, $location, $localStorage, $http,  $scope)
    {
       var vm = this;

       vm.name = $localStorage.name;
       vm.userId = $localStorage._id;

       vm.readNotifications = function(notifId){
          $http({
               url: 'http://192.168.2.8:7200/api/readNotification',
               method: 'POST',
               data: {notificationId: notifId,  userId: vm.userId}
           }).then(function(res){
              vm.rslt = res.data.result1;
              console.log(vm.rslt);
              vm.refresh();
              $location.path('/sharedwishlistdetails');
            }, function(error){
               alert(error.data);
            })
         }
      }
})();

toolbar.hrml

<div class="notification">
    <md-menu id="language-menu" md-offset="0 60" md-position-mode="target-right target" >
        <md-button class="md-fab md-mini " aria-label="Bell" ng-click="$mdOpenMenu()">
            <md-icon md-svg-src="assets/icons/fonts/bell.svg"></md-icon>
        </md-button>

        <md-menu-content  style="height:150px; overflow:auto; ">
            <div class="notifi" ng-repeat="notification in vm.result">
                <md-menu-item ng-hide="vm.showMessage" ng-repeat="name in notification.notificationDetails">
                    <md-button  ng-click="vm.readNotifications(notification._id); vm.findWishlist(notification._id)"> 
                        <b>{{name.userName}}</b> shared wishlist with you. 
                    </md-button>
                </md-menu-item>
                <span><hr flex/></span>
            </div> 

            <md-menu-item ng-show="vm.showMessage">
                <md-button ng-click="">
                    No notifications.
                </md-button>
            </md-menu-item>
            <a ui-sref="app.notifications" style="text-align:center; font-size:14px">See All</a>
        </md-menu-content>
    </md-menu>
    <div ng-show="vm.showBadge" class="badge bg-danger up">{{vm.CountTrue}}</div>   
</div>

toolbar.module.js

(function ()
{
   'use strict';

    angular
       .module('app.toolbar', [])
       .config(config);
    function config($stateProvider, $translatePartialLoaderProvider)
    {
       $translatePartialLoaderProvider.addPart('app/toolbar');

       $stateProvider.state('app.toolbar', {
          url    : '/sharedwishlistdetails',
          views  : {
               'content@app': {
                   templateUrl: 'app/toolbar/sharedwishlistdetails.html',
                   controller : 'ToolbarController as vm'
                }
           }
       });   
    }
})();

Result

1 个答案:

答案 0 :(得分:0)

我是否正确,假设您的代码类似于:

   $stateProvider.state('app.toolbar', {
      url    : '/sharedwishlistdetails',
      views  : {
           'content@app': {
               templateUrl: 'app/toolbar/toolbar.html',
               controller : 'ToolbarController as vm'
            },
            'list@app': {
                   templateUrl: 'app/toolbar/sharedwishlistdetails.html',
                   controller : 'ToolbarController as vm'
            }
       }
   });

如果是这样 - 您的模板具有不相关数据的控制器的不同实例,因此每个控制器应独立加载数据。

如果我怀念建议 - 请通过sharedwishlistdetails.html及其查看路线提供电话给tada。