1
我想從當前視圖中的控制器共享一些數據到我的導航欄。但數據共享錯誤,或者沒有正確同步。角度工廠數據不能正確共享
這是我廠:
myApp.factory('HeaderData', function() {
var data = {
Visible: true,
PageTitle: ''
};
return {
getVisible: function() {
return data.Visible;
},
setVisible: function (visible) {
data.Visible = visible;
console.log("HeaderData: " +visible);
},
getPageTitle: function() {
return data.PageTitle;
},
setPageTitle: function (title) {
data.PageTitle = title;
}
};
});
然後在我的控制器,我做了以下內容:
myApp.controller('homeCtrl',function ($scope, HeaderData) {
HeaderData.setVisible(false);
console.log("HomeCtrl: " + HeaderData.getVisible());
});
在導航控制器
我在讀取數據類似以下內容:
會記錄以下輸出:
NavCtrl: true
HeaderData: false
HomeCtrl: false
所以設置我的數據之前我NavContrl被加載,這是合乎邏輯的,因爲它是這樣的HTML:
<div ng-controller="navCtrl">
<ng-include ng-show="showHeader" src="'../partials/common/header.html'"></ng-include>
</div>
<div ng-view></div>
所以,我怎樣才能使它的工作,我的navCtrl正確地更新數據,並在此示例中將$scope.showHeader
設置爲false
時隱藏標題?
這不一樣的東西,傳遞數據的只是不同的方式,除非我的測試錯誤 – Kiwi
不,他們不是一回事。試試看,這是AngularJS中常見的'陷阱'。 – pixelbits
我試過了,但是有一些同步問題,我的不好!謝謝! – Kiwi