AngularJS - $StateProvider الديناميكي
-
20-12-2019 - |
سؤال
أحاول بفارغ الصبر إنشاء $StateProvider الديناميكي:
معيار ثابت $StateProvider:
$stateProvider
.state('main',
{
url: '/',
templateUrl: '/views/main.html',
controller: 'MainCtrl'
})
.state('login',
{
templateUrl: '/views/login-form.html',
controller: 'LoginCtrl'
})
.state('logout',
{
controller: 'LogoutCtrl'
})
.state('sales', {
templateUrl: '/views/sales-data.html',
controller: 'SalesDataCtrl',
resolve: {
user: 'User',
authenticationRequired: function(user) {
user.isAuthenticated();
}
}
});
ديناميكي $StateProvider:
var verify = function(user) { user.isAuthenticated(); };
var states= [
{ name: 'main', url: '/', templateUrl: '/views/main.html', controller: 'MainCtrl' },
{ name: 'login', url: '', templateUrl: '/views/login-form.html', controller: 'LoginCtrl' },
{ name: 'logout', url: '', templateUrl: '', controller: 'LogoutCtrl' },
{
name: 'sales',
url: '',
templateUrl: '/views/sales-data.html',
controller: 'SalesDataCtrl',
//resolve:
//[
// { user: 'User', authenticationRequired: 'verify();' }
//]
}
];
// w/o the array brackets in resolve the navigation does not work.
// with the array brackets, once sales is clicked I get:
// Error: [ng:areq] Argument 'fn' is not a function, got Object
تعمل الطريقتان أدناه طالما أنني لا أستخدم الحل:
This works:
angular.forEach(states, function(state) {
$stateProvider.state(state);
});
This works:
angular.forEach(states, function(state) {
$stateProvider.state(state.name, state);
});
سؤال: كيف يمكنني أن أجعل $StateProvider الديناميكي يعمل بكل تصميم؟
المحلول
الحل:
giveacodicetagpre.نصائح أخرى
أعتقد أنك تتصل $stateProvider.state(...)
بشكل غير صحيح، فإنه يأخذ معرف الحالة ثم كائن التكوين.
على افتراض الخاص بك name
الخصائص صالحة وفريدة من نوعها، ويجب أن تكون قادرًا على القيام بذلك (أو تعديلها حسب الحاجة):
angular.forEach(states, function(state) {
$stateProvider.state(state.name, state);
});
لا تنتمي إلى StackOverflow