我試圖在運行時更改父視圖模板 - 在服務中。Angular UI路由器在運行時替換視圖
我的應用程序的配置是這樣的:
$stateProvider
.state('base', {
abstract: true,
views: {
'header': {
controller: 'HeaderCtrl',
templateUrl: 'header.html'
},
'': {
template: '<div ui-view="main"></div>'
}
}
})
.state('base.home', {
url: '/',
views: {
'main': {
controller: 'SomeContentCtrl',
templateUrl: 'content.html'
}
}
});
我再有一個是從SomeContentCtrl稱爲服務將偵聽一個事件,在這種情況下我想設置templateUrl頁眉爲空。例如:
angular
.module('RemoveTemplate', [ ])
.factory('RemoveTemplate', ['$window', '$view', '$state',
function RemoveTemplate ($window, $view, $state) {
var windowElem = angular.element($window);
var listen = function () {
windowElem.on('RemoveTemplate', function (event) {
$view.load('[email protected]', {
templateUrl: null
});
// Trying both, even tried without refreshing the state
$state.reload();
$state.go('wh.lobby');
});
};
return {
listen: listen
};
}
]);
});
但是這根本不起作用。有沒有人遇到過類似的用例?
謝謝
感謝您的回答。我不認爲這符合上面提供的要求,因爲它不允許在加載後更改模板。我對麼? – jribeiro
這將適用於每個導航。 如果您想在常規運行時刪除模板,則可以隨時清空DOM元素。 – Rodik