2015-08-26 84 views
0

您好,我需要使用一個控制器的結果範圍中的變量到另一個控制器。我可以通過使用嵌套控制器實現這一點,但在我的情況下,我的控制器2不是控制器1的孩子。我以某種方式能夠實現我的輸出與以下控制器,但我仍然想知道這是最佳實踐,如果不是我怎麼能通過各控制器之間的變量。如何在控制器中傳遞變量在AngularJS中

angular.module('test',[]) 
     .factory('PassParameter', PassParameter) 
    function PassParameter(){ 
     var thisValue = {}; 
     return { 
      getParameter: function() { 
       return thisValue; 
      }, 
      setParameter: function (setValue) { 
       _.extend(thisValue, setValue); 
      }, 
      removeParameter : function(value) { 
       _.omit(thisValue, value); 
      } 
     }; 
    }; 

i傳遞一個對象給setParameter函數,並從getParameter函數獲取其值。

+1

那麼我目前正在使用像你這樣的setter/getter工廠,除了我使用Localstorage來保存一些數據之外,antoher選項將使用$ rootScope,它在所有控制器中都可用,但是我不建議只爲少數重要的變量 – stackg91

+0

做那樣的事情那裏的服務。它們是你可以在控制器內部注入的函數,你可以將settere和gettere放在裏面,這樣你就可以將這個變量注入到你想要的任何地方。 – mautrok

回答

0

這是我在控制器之間傳遞信息的方式。 *請注意,我正在使用angular.copy,所以我不會丟失參考,這種方式當「obj」發生變化時,您不需要再次獲取它(僅適用於對象{})

angular.module('test').service('mySrv', 
function() { 
    var obj = {}; 

    this.getObj = function(){ 
     return obj; 
    }; 

    this.setObj = function(obj){ 
     obj = angular.copy(obj); 
    }; 
}); 
+0

是的,我可以使用angular.copy,但如果我嘗試第二次傳遞變量,我將失去第一個傳遞的obj。即使在我完成對該對象的使用後,在擴展方法中,我的obj仍然存儲着它的值。我編輯了我的代碼以刪除不再需要的值。但我仍然想知道是否有更好的解決方案? –

相關問題