Я пытаюсь динамически загружать состояния из файла JSON, используя ui-router-extras
. Файл JSON выглядит следующим образом:Состояние AngularJS loading
[
{
"name": "app",
"url": "/app",
"abstract": "true",
"resolve": "helper.resolveFor('fastclick', 'modernizr', 'icons')"
},
{
"name": "login",
"url": "/login",
"title": "User Login",
"templateUrl": "",
"redirectToLogin": "true"
},
{
"name": "dashboard",
"url": "/dashboard",
"title": "Dashboard",
"templateUrl": "helper.basepath('dashboard.html')",
"resolve": "helper.resolveFor('flot-chart', 'flot-chart-plugins', 'weather-icons')"
}
]
Ниже приводится маршруты конфигурационный файл:
(function() {
'use strict';
angular
.module('app.routes')
.config(routesConfig);
routesConfig.$inject = ['$stateProvider', '$locationProvider', '$urlRouterProvider', 'RouteHelpersProvider', '$stateProvider', '$futureStateProvider'];
function routesConfig($stateProvider, $locationProvider, $urlRouterProvider, helper, $sp, $fsp) {
$locationProvider.html5Mode(false);
var futureStateResolve = function($http) {
return $http.get("states.json").then(function (response) {
console.log(response.data);
angular.forEach(response.data, function (state) {
$sp.state(state);
})
})
}
$fsp.addResolve(futureStateResolve);
// defaults to dashboard
$urlRouterProvider.otherwise('/app/login');
}
})();
/login
состояние работает нормально, но остальные не работают и дать ошибку «invocables должен быть объектом». Я думаю, что это потому, что функции helper.basepath()
и helper.resolveFor()
не работают, поскольку они поступают как строки из JSON.
Что мне делать?
, как и для функции передать его как 2 свойства ... имя и аргументы функции – charlietfl
Не ясно, на самом деле – user3036757
мой плохой ... просто нужно массив из args для решения '{" resolve ":" ['flot-chart', 'flot-chart-plugins', 'weather-icons'] ...} '... затем передать массив и использовать apply(). .. 'helper.resolveFor.apply (null, obj.resolve)' – charlietfl