Как получить доступ к данным, представленным в одном контроллере, двумя страницами в angularjs?

0

У меня есть данные vm.rslt в toolbar.controller.js вроде, и теперь я хочу получить доступ к этому из 2-х страниц, таких как toolbar.html и sharedwishlistdetails.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'
                }
           }
       });   
    }
})();

Изображение 174551

  • 0
    Angular js используется для работы с одностраничными приложениями. Вы можете попробовать использовать маршрутизацию в своем коде.
  • 0
    @pritishvaidya Это на самом деле не так. AngularJS можно использовать в любом веб-приложении. Это не должно быть одностраничное приложение.
Показать ещё 3 комментария
Теги:
angular-material

1 ответ

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'
            }
       }
   });

Если это так - ваш шаблон имеет отдельные экземпляры контроллера с несвязанными данными, поэтому каждый контроллер должен загружать данные независимо.

Если я пропустил предложение - просьба указать tada из sharedwishlistdetails.html и просмотреть \route.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню