0

我知道angularjs會執行雙向數據綁定。我有兩個控制器,我想互相交談。我用了一個工廠讓他們相互溝通。在AppCtrl控制器中,我將Data.mydata.buildingName分配給一個名稱。這是我在做什麼:無法在首次更改後使用工廠的控制器之間共享數據

調用AppCtrl,並更改buildingName的值。

然後,當我調用PathController時,它知道buildingName的值已更改並顯示該值。

但是當我回到AppCtrl並再次更改buildingName的值時,PathController似乎並不知道這一點。

任何人都可以告訴我我在這裏做了什麼錯嗎?

//工廠

.factory('Data', function(){ 
    return { 
     mydata: { 
      buildingName: 'Campus', 
      shortName: 'Main', 
      lattitude: '35.720031000963', 
      longittude: '-87.343068987131' 
     } 
    }; 
})  

//控制器的一個

.controller('AppCtrl', function($scope, Data, $http, $ionicModal, $timeout) { 

    // map location 
    $scope.mapLocation = function(name, shortName, lattitude, longittude) { 
     Data.mydata.buildingName= name; 
     Data.mydata.shortName= shortName; 
     Data.mydata.lattitude= lattitude; 
     Data.mydata.longittude = longittude 
     $scope.Data = Data.mydata; 

     console.log("From AppCtrl: " + Data.mydata.buildingName+ " "+ Data.mydata.shortName+" "+ Data.mydata.lattitude + " "+ Data.mydata.longittude); 
     $scope.modal.hide(); 
    } 
}) 

//控制器配備了兩個

.controller("PathController", [ '$scope', 'Data', function($scope, Data) { 

    $scope.Data = Data.mydata.buildingName; 

    var name = Data.mydata.buildingName + " - " + Data.mydata.shortName; 
    lattitude = Data.mydata.lattitude; 
    longitude = Data.mydata.longittude; 

    angular.extend($scope, { 
     center: { 
      lat: 35.720031000963, 
      lng: -87.343068987131, 
      zoom: 17 
     }, 

     markers: { 
      Campus: { 
       lat: longitude, 
       lng: lattitude, 
       focus: true, 
       draggable: false, 
       message: name 
      }, 
     }, 
    }); 
}]) 
+0

哪裏是'mapLocation()'從叫什麼名字?如果在角度之外的事件需要通知範圍變化的角度 – charlietfl

+0

@charlietfl地圖位置通過HTML中的onClick調用。 ()如何將範圍更改的角度通知工廠? –

回答

相關問題