gpt4 book ai didi

javascript - Angular UI Router 在运行时替换 View

转载 作者:行者123 更新时间:2023-11-30 12:40:45 24 4
gpt4 key购买 nike

我正在尝试在运行时更改父 View 模板 - 在服务内。

我的应用配置如下:

$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 调用的服务,它将监听一个事件,在发生此类事件时,我想将 header 的 templateUrl 设置为 null。像这样的东西:

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('header@base', {
templateUrl: null
});

// Trying both, even tried without refreshing the state
$state.reload();
$state.go('wh.lobby');
});
};

return {
listen: listen
};

}
]);
});

但这根本不起作用。以前有人遇到过类似的用例吗?

谢谢

最佳答案

您可以指定一个 templateURL 函数,该函数在您每次导航到该州时运行。

https://github.com/angular-ui/ui-router/wiki/Quick-Reference#template-templateurl-templateprovider

这个方法可以检查它是否应该提供一个 url 或其他东西;示例:

$stateProvider.state('home', {
url: '/',
templateUrl: function () {
if (header === true) {
return 'app/templates/home.html';
} else {
return somethingElse;
}
}
})

关于javascript - Angular UI Router 在运行时替换 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24530526/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com