我想有兩個不同的控制器的控制器之間的數據與彼此通信。使用角服務共享
控制器1
function WelcomeCtl($scope, emailService) {
$scope.save=function(){
emailService.saveEmail(‘Hi’);
}
}
WelcomeCtl.$inject = [$scope, emailService];
該控制器被設計爲採取從文本字段中的文本(以納克模型=「電子郵件」),並把文本轉換爲服務(emailService),所以它可以在接下來的NG-視圖中使用(其由下一個控制器控制) //用於測試目的,我只是把「您好」直接進入saveEmail功能
控制器2
function SignupCtl($scope, emailService) {
window.alert(emailService.getEmail())
}
SignupCtl.$inject = [$scope, emailService];
出於測試旨意我使用window.alert顯示getEmail()
emailService
angular.module('myApp.services', [])
.service('emailService', function(){
var text =」start value」;
return{
saveEmail:function (data){
text = data;
},
getEmail:function(){
return text;
}
};
});
的值作爲使用控制器1和控制器2的結果作爲與此服務,window.alert打印出指定「開始值」,而不是「嗨」
當我在代碼中放置更多的window.alert函數以查看發生了什麼時,我看到當調用save()時,Controller 1執行並將值保存到服務中,express.js加載下一頁。然後Controller2激活。當控制器2激活時,它重新初始化服務,將文本設置回「起始值」。然後,當getEmail叫其返回值「啓動值」
這混淆了我,因爲我是那個服務是每次都包含在控制器時間未初始化的印象。
請教資源。
Better design for passing data to other ng-view's and persisting it across controllers
我也工作過的角度,明確種子 https://github.com/btford/angular-express-seed
非常感謝。我以爲我只是在兩個ng視圖之間切換,所以角度不必重新加載,但我實際上正在做你懷疑的事情,並正在切換頁面。改變了它,所以我只是切換視圖,它完美的作品。謝謝!!! – user2110481 2013-02-27 03:17:40
非常感謝!我一直在尋找Angular的路由選擇! – 2013-07-05 14:45:07