我有一个简单的应用程序,它使用$ stateProvider在模板/视图之间切换。我有两个链接:
<a href="#" ng-click="manage('area')">Areas</a>
<a href="#" ng-click="manage('vendors')">Vendors*</a>
我在控制器中有以下处理程序:
var vm = $scope;
vm.manage = function (type) {
if (type == 'vendors') {
vm.message = 'Comming soon.';
} else {
$state.go(type);
}
};
当我点击Regions链接时,我将状态更改为area
(使用$state.go(...)
调用,然后我看到模板(和html内容)。然后,当我点击供应商时链接我看到默认消息&#39;很快就会出现&#39;。然后当我再次单击Regions链接时,我从区域控制器获取console.log但不输出(模板和其中的html内容)。在这里,这是一项非常简单的任务,我一直在做,不知道为什么我第二次请求<h1></h1>
更改时没有得到静态$state
。
我已经尝试$scope.apply()
甚至$scope = $scope.new
假设内存中的某些内容被堵塞或其他东西。
我的模块看起来像这样:
'use strict';
(function () {
angular.module('areaModule', []).config(areaModule);
areaModule.$inject = ['$stateProvider'];
function areaModule($stateProvider) {
$stateProvider
.state('area', {
url: '/area',
templateUrl: 'app/assetManagement-app/modules/area/area.tmpl.html',
controller: 'area-controller'
});
}
})();
,控制器看起来像这样
'use strict';
(function () {
angular.module('areaModule').controller('area-controller', areaController);
areaController.$inject = ['$scope', '$state', 'areaService'];
function areaController($scope, $state, areaService) {
var vm = $scope;
// clean up any memory leaks
$scope.$on('$destroy', function () { });
// init()
vm.init = function () {
console.log('area controller');
};
vm.init();
return vm;
}
}());
,模板在这里
<div class="container" style="margin: 10px 5px 10px 5px;">
<h1>Area Management View</h1>
</div>
发生了什么?
答案 0 :(得分:1)
这是href和state.go之间的冲突。如果你删除html中的href它正在按预期工作。