Я не знаю, почему это первое состояние работает, а второе - нет:
Рабочее состояние:
.state('app.pages.invoice', {
url: '/invoice',
templateUrl: "assets/views/pages_invoice.html",
title: 'Invoice',
resolve: {
"currentAuth": ["Auth", function(Auth) {
return Auth.$requireSignIn();
}]
}
})
Не работает состояние, бросая Error: [ng:areq]
:
validationCtrl & р1 = не% 20aNaNunction% 2C% 20got% 20undefined
.state('app.form.validation', {
controller: "validationCtrl",
url: '/validation',
templateUrl: "assets/views/form_validation.html",
title: 'Form Validate',
resolve: {
"currentAuth": ["Auth", function(Auth) {
return Auth.$requireSignIn();
}]
}
})
Этот второй работает только тогда, когда контроллер вводится через это:
resolve: loadSequence('validationCtrl')
то есть (контроллер перемещается в разрешение и нет . state ( 'app.form.validation' , { url : '/ validation' , templateUrl : "assets / views / form_validation.html" , title : 'Form Validate' , разрешить : loadSequence ( 'validationCtrl' ) }) больше):
currentAuth
и тогда я не знаю, как снова включить мой элемент в решение. Как я могу ввести validationCtrl.js через решение и добавить элемент currentAuth также в решение ?current// Generates a resolve object previously configured in constant.JS_REQUIRES (config.constant.js) function loadSequence() { var _args = arguments; return { deps: ['$ocLazyLoad', '$q', function ($ocLL, $q) { var promise = $q.when(1); for (var i = 0, len = _args.length; i < len; i++) { promise = promiseThen(_args[i]); } return promise; function promiseThen(_arg) { if (typeof _arg == 'function') return promise.then(_arg); else return promise.then(function () { var nowLoad = requiredData(_arg); if (!nowLoad) return $.error('Route resolve: Bad resource name [' + _arg + ']'); return $ocLL.load(nowLoad); }); } function requiredData(name) { if (jsRequires.modules) for (var m in jsRequires.modules) if (jsRequires.modules[m].name && jsRequires.modules[m].name === name) return jsRequires.modules[m]; return jsRequires.scripts && jsRequires.scripts[name]; } }] }; }
вот функция последовательности погрузки:
app.controller('ValidationCtrl', ["$scope", "$state", "$timeout", "SweetAlert", "$location",
function ($scope, $state, $timeout, SweetAlert, $location) {
...
В моем первом состоянии нет контроллера, поэтому я прекрасно разбираюсь в currentAuth . Но когда в представлении есть контроллер, добавьте currentAuth, чтобы контроллер больше не работал.
заметка:
мой currentAuth взят отсюда .
Обновить:
herer - validationCtrl.js :
app.
обновление 2:
в основном вопрос заключается в том, чтобы разрешить только в настоящее время подписываться пользователям просматривать страницы, являющиеся дочерними ; поэтому мой родительский вид выглядит следующим образом: поэтому в основном я хочу ввести фабрику currentAuth в основное родительское представление, и дети должны наследовать это. Они не могут быть просмотрены до тех пор, пока не будет разрешен currentAuth в родителе.$stateProvider.state('app', { url: "/app", templateUrl: "assets/views/app.html", resolve: loadSequence('modernizr', 'moment', 'angularMoment', 'uiSwitch', 'perfect-scrollbar-plugin', 'toaster', 'ngAside', 'vAccordion', 'sweet-alert', 'chartjs', 'tc.chartjs', 'oitozero.ngSweetAlert', 'chatCtrl'), abstract: true })
.state('app.form.validation', {
controller: "ValidationCtrl",
url: '/validation',
templateUrl: "assets/views/form_validation.html",
title: 'Form Validate',
resolve: {
"currentAuth": ["Auth", function(Auth) {
return Auth.$requireSignIn();
}]
}
})
изменить 1:
Я поставил вопрос других слов , как хорошо здесь и пытаюсь найти ответ на несколько государств решить.
изменить 2:
здесь main.js: пастебиновый url
и URL-адрес validationCtrl.js pastebin .
Фактически, validationCtrl - это просто пример контроллера среди других контроллеров, которые у меня есть.
Вопрос заключается в том, как заблокировать разрешение просмотра для дочерних представлений, если не разрешен родительский currentAuth? учитывая, что я не знаю, как обрабатывать множественные решения с помощью loadsequence и $ stateProvider . state ( 'app' , { url : "/ app" , templateUrl : "assets / views / app.html" , разрешить : { scripts : loadSequence ( 'modernizr' , 'moment' , 'angleularMoment' , 'uiSwitch' , ' Perfect- scrollbar -plugin ' , ' toaster ' , ' ngAside ' , ' vAccordion ' , ' sweet-alert ' , ' chartjs ' , ' tc.chartjs ' , ' oitozero.ngSweetAlert ' , ' chatCtrl ' ). deps , currentAuth : function ( Auth ) { return Auth . $ requireSignIn ();} }, abstract : true }) . state ( 'app.pages.invoice' , { // url станет «/ app / invoice» url : '/ invoice' , templateUrl : «assets / views / pages_invoice.html» , название : «Invoice» }) . state ( 'app.form.validation' , { controller : "ValidationCtrl" , // url станет '/ app / validation' url : '/ validation' , templateUrl : "assets / views / form_validation.html" , title : ' Form Validate ' }) .