2015-04-27 21 views
1

我有兩個控制器和一個工廠。我試圖從controller1更新工廠中的值以查看controller2上的更新。 Controller2是我的側邊欄的控制器。如何在另一個控制器中更新示波器的值

控制器1:

$scope.proyectoLoad = ProyectoLoadedFactory.getProyectoLoaded();  

$scope.setDefault = function() {    
    $scope.proyectoLoad = $("#valueProyecto").val();   
    $("#small").modal("hide"); 
}; 

$scope.$watch('proyectoLoad', function (newValue, oldValue) { 
    ProyectoLoadedFactory.setProyectoLoaded(newValue); 
}, true); 

var proyectoLoaded = -1; 
var returnFactory = { 
    getProyectoLoaded: function() { 
     return proyectoLoaded; 
    }, 
    setProyectoLoaded: function (idProyecto) { 
     proyectoLoaded = idProyecto;    
    } 
}; 
return returnFactory; 

和控制器2:

$scope.proyectoLoaded = ProyectoLoadedFactory.getProyectoLoaded(); 
     $scope.$watch(ProyectoLoadedFactory.getProyectoLoaded(), function (oldValue, newValue) { 
      $scope.proyectoLoaded = newValue; 
     }, true); 

我廠正在更新其價值,但對控制器2我沒有看到任何改變它保持-1值。

在此先感謝。

+0

Ahh..using jQuery是角 –

+0

感謝在錯誤的思路@pankajparkar,我在角度很新...我有我的觀點的隱藏的輸入,也被滿足時,我打開一個bootstrap模型。有沒有什麼辦法讓角度而不是jQuery的隱藏輸入?謝謝。 –

回答

1

你的getter和setter越來越在的2路結合的方式......

簡化您的工廠,因此只是在返回對象管理的值

var proyectoLoaded = -1; 
var returnFactory = { 
    proyectoLoaded: proyectoLoaded 
}; 
return returnFactory; 

然後你控制器2可以簡化爲只從分配給你的工廠範圍返回的對象...

$scope.proyectoLoaded = ProyectoLoadedFactory; 

現在,當在工廠對象的值改變,這種改變將在您的控制器中看到。

這裏有一個樣品中控制器CodePen

+0

如何從第一個控制器設置proyectoLoaded值? –

+0

類似於控制器2的方式。確保將工廠返回的對象分配給作用域(而不僅僅是對象的鍵/值)。那麼你可以改變該對象的值,並且它應該傳播。 – sfletche

+0

我已經改變了我的工廠,就像你說的那樣,但這樣我就可以得到proyectoLoaded,但沒有設置它...我錯了嗎? –

相關問題