2017-02-17 25 views
0

あるコントローラから別のコントローラに値を渡そうとしています。両方のコントローラは同じモジュール上にあります。私はサービスを作ってみました。問題は、第1コントローラからサービスに価値を渡すことができるが、第2コントローラでその値を取得できないことです。どんな助けもありがとう。アイテムページに表示されます。コントローラから他のページの別のコントローラに値を渡す - AngularJS

コントローラ(アイテムページにある)1:(記事のページにあります)

itpApp.controller("itpAppControllerKB", function($scope, sharedProperties, $location) { 
$scope.showArticles = function(myValue) { 

     console.log('myValue: ' + myValue); 

     sharedProperties.setListName(myValue); 

     window.location.href = "/portal/articles"; 
    }; 

}); 

コントローラ2

itpApp.controller("itpAppControllerKBArticle", function($scope, sharedProperties) { 
$scope.article = sharedProperties.getListName(); 

console.log('selTopic: ' + $scope.article); 
} 

サービス

itpApp.service('sharedProperties', function() { 
    var list_name = ''; 
    return { 

     getListName: function() { 
      return list_name; 
     }, 
     setListName: function(name) { 
      list_name = name; 
     } 
    }; 
}); 
+0

サービスの返品の状態はどうですか?工場はそれを必要とするが、サービスは必要ない。それはあなたのミスです。 – Gilsdav

+1

window.location.href = "/ portal/articles";ページをリロードするすべてのサービスデータが失われた場合... – fubbe

+0

http://plnkr.co/edit/VEgt5v9VmeRPU4QIYArF?p=preview。私はこのリンクからサービスを使用する場合。それは働いていますが、以前の値もすべて取得しています。 – user3781360

答えて

1

サービスでreturn文を使用しないでください。ここに例があります:

itpApp.service('sharedProperties', function() { 
    this.list_name = ''; 

    this.getListName = function() { 
     return this.list_name; 
    }; 

    this.setListName = function(name) { 
     this.list_name = name; 
    }; 
}); 
+0

@ thisとlocationを使用すると、うまくいくはずです。 – fubbe

関連する問題