@strelov1

Как передать значение из одной функции в другую anagular?

Подскажите как передать значение из одной функции в другую
module.controller('MasterController', function($scope, $data) {
    $scope.items = $data.items;  
    
    $scope.showDetail = function(index) {
      var selectedItem = $data.items[index];
      var id = selectedItem.id; //ЭТО ЗНАЧЕНИЕ
      $data.selectedItem = selectedItem;
      $scope.navi.pushPage('detail.html',{id: selectedItem.id});
    };
  });

  module.controller('MasterControllerSub', function($scope, $data, $http) {
    // alert(id);
      var url = 'url';
        url += id; //CЮДА ПЕРЕДАТЬ
        $http.get(url).success(function(data){
          $scope.items = data.menu; 
        });
    
    $scope.showDetailSub = function(index) {
      $scope.navi.pushPage('detail.html', {});
    };
  });
  • Вопрос задан
  • 187 просмотров
Пригласить эксперта
Ответы на вопрос 4
TekVanDo
@TekVanDo
Javascript Developer
через сервис вида
module.service('selectedItemService', function() {
  var selectedItemId = null;

  this.setItemId = function(id) {
     selectedItemId = id;
  }

  this.getItemId = function(){
      return selectedItemId ;
  }
});


ну либо забрать напрямую найдя $scope MasterController через $rootScope, но я не советую так делать.
Ответ написан
Комментировать
Можете через $rootScope например, но это плохая практика, можно через фабрику, будет примерно так:
var app = angular.module("App", [])
.value("test", {})
.controller("first", ['$scope', '$testFactory', function ($scope, $testFactory) {
  var test = $testFactory.setTest(1);
  console.log(test);
}])
.controller("second",['$scope', '$testFactory', function ($scope, $testFactory) {
  var test = $testFactory.setTest(2);
  console.log(test);
}])
.factory('$testFactory', [function () {
	var test = 0;
  
  return {
    setTest: function (val) {
      test = val
      return test;
    }
  }
}]);
Ответ написан
Комментировать
baskerville42
@baskerville42
Учусь работать (Junior)
Точно не скажу, сам пробовал один раз да и то потом переписал по людски, есть у ангулара возможность подключать один контроллер к другому. Считаю методы с скоупами индо-кодо-писанием.
Ответ написан
Комментировать
@strelov1 Автор вопроса
В общем я не понимаю как но удалось передать через $data.selectedItem

//MENU
  module.controller('MasterController', function($scope, $data) {
    $scope.items = $data.items;  
    
    $scope.showDetail = function(index) {
      var selectedItem = $data.items[index];
      $data.selectedItem = selectedItem;  //Передаем значение
      $scope.navi.pushPage('detail.html',{});
    };
  });

//SUB_MENU
  module.controller('MasterControllerSub', function($scope, $data, $http) {
    var selectedItem= $data.selectedItem; //Принимаем значение
    var id = selectedItem.id;
    var url = 'url/api/sub-menu.php?id='+ id;
        $http.get(url).success(function(data){
          $scope.items = data.sub_menu; 
        });
    
    $scope.showDetailSub = function(id) {
      
      var selectedItemSub = id;
      $data.selectedItemSub = selectedItemSub;
      $scope.navi.pushPage('categor.html',{});
    };
  });
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы