AngularJS UI 路由器多次加载同一个控制器
AngularJS UI Router loads same controller several times
我遇到了以下问题:
这是我的 $stateProvider 的一部分:
angular.module('sampleApp').config(function ($stateProvider) {
$stateProvider
.state('property', {
url: '/property',
templateUrl: 'app/property/property.html',
controller: 'PropertyCtrl',
authenticate: true,
role: 'user'
})
.state('property.selected', {
url : '/:propertyId',
templateUrl : 'app/property/edit/edit-controller.html',
controller : 'PropertyEditCtrl'
})
.state('property.selected.settings', {
url : '/settings',
templateUrl : 'app/property/partials/settings.html'
})
.state('property.selected.settings.general', {
url : '/general',
templateUrl : 'app/property/partials/settings-general/settings-general.html',
controller : 'SettingsGeneralCtrl'
})
.state('property.selected.settings.property', {
url : '/property',
templateUrl : 'app/property/partials/settings-property/settings-property.html',
controller : 'SettingsPropertyCtrl'
})
.state('property.selected.settings.extras', {
url : '/extras',
templateUrl : 'app/property/partials/settings-extras/settings-extras.html',
controller : 'SettingsExtrasCtrl'
})
发生的情况是,由 'property.selected' 以外的任何状态加载的控制器加载了几次。
在'property.selected.settings.general'的情况下,SettingsGeneralCtrl加载了28次。如果我在那个控制器中收听一个事件并且 console.log 某些东西被记录了 28 次。
知道为什么吗?我完全迷路了。
问题是我在那个级别有一堆未命名的 ui-views。由于控制器被 ui 调用 - 查看它已加载多次。
解决方案是命名视图并使用 ui-view="viewName".
调用它们
我遇到了以下问题:
这是我的 $stateProvider 的一部分:
angular.module('sampleApp').config(function ($stateProvider) {
$stateProvider
.state('property', {
url: '/property',
templateUrl: 'app/property/property.html',
controller: 'PropertyCtrl',
authenticate: true,
role: 'user'
})
.state('property.selected', {
url : '/:propertyId',
templateUrl : 'app/property/edit/edit-controller.html',
controller : 'PropertyEditCtrl'
})
.state('property.selected.settings', {
url : '/settings',
templateUrl : 'app/property/partials/settings.html'
})
.state('property.selected.settings.general', {
url : '/general',
templateUrl : 'app/property/partials/settings-general/settings-general.html',
controller : 'SettingsGeneralCtrl'
})
.state('property.selected.settings.property', {
url : '/property',
templateUrl : 'app/property/partials/settings-property/settings-property.html',
controller : 'SettingsPropertyCtrl'
})
.state('property.selected.settings.extras', {
url : '/extras',
templateUrl : 'app/property/partials/settings-extras/settings-extras.html',
controller : 'SettingsExtrasCtrl'
})
发生的情况是,由 'property.selected' 以外的任何状态加载的控制器加载了几次。 在'property.selected.settings.general'的情况下,SettingsGeneralCtrl加载了28次。如果我在那个控制器中收听一个事件并且 console.log 某些东西被记录了 28 次。
知道为什么吗?我完全迷路了。
问题是我在那个级别有一堆未命名的 ui-views。由于控制器被 ui 调用 - 查看它已加载多次。
解决方案是命名视图并使用 ui-view="viewName".
调用它们