我有一个州,我去了$ state.go
让我们调用与stateName
相关联的州templateName
和templateName
来电controllerName
。
我的印象是每次使用controllerName
时都不会运行$state.go(stateName)
(此印象来自controllerName
内使用console.log)
到目前为止,我的'修复'是使用$scope.$on('$stateChangeSuccess' ...
并检查stateName
。但这感觉很脆弱:如果我改变状态的名称,我需要改变控制器内部的代码。
我的问题:
1)加载templateName
时是否总是调用控制器?
2)有没有办法确保每次都调用controllerName
?或者至少它内部有一些功能?
答案 0 :(得分:0)
我发现一个hacky解决方案是强制$ state reload选项:
myApp.config(function ($provide) {
$provide.decorator('$state', function ($delegate) {
var state = $delegate;
state.baseGo = state.go;
var go = function (to, params, options) {
options = options || {};
if (angular.isUndefined(options.reload)) {
options.reload = true;
}
this.baseGo(to, params, options);
};
state.go = go;
return $delegate;
});
})
这样,无论何时导航状态都会完全重新加载。