对于想了解angularjs–AngularLaravelUI-Router问题的读者,本文将提供新的信息,我们将详细介绍angular-ui-router,并且为您提供关于AngularJSangu
对于想了解angularjs – Angular Laravel UI-Router问题的读者,本文将提供新的信息,我们将详细介绍angular-ui-router,并且为您提供关于AngularJS angular ui router – 将自定义数据传递给控制器、angularjs – Angular $routeParams是空白的、angularjs – Angular 2中的状态参数(Angular 1&ui-router)的等价物是什么?、angularjs – Angular Laravel项目的CORS问题的有价值信息。
本文目录一览:- angularjs – Angular Laravel UI-Router问题(angular-ui-router)
- AngularJS angular ui router – 将自定义数据传递给控制器
- angularjs – Angular $routeParams是空白的
- angularjs – Angular 2中的状态参数(Angular 1&ui-router)的等价物是什么?
- angularjs – Angular Laravel项目的CORS问题
angularjs – Angular Laravel UI-Router问题(angular-ui-router)
在我的角度模块.config中,我有一些UI-Router状态设置:
app.config(['$stateProvider','$urlRouterProvider',function($stateProvider,$urlRouterProvider){ // Routes config using ui-router $urlRouterProvider.otherwise('/'); $stateProvider .state('home',{ url: '/home',templateUrl: 'templates/home.html',controller: 'HomeController' }) .state('projects',{ url: '/projects',templateUrl: 'templates/projects/index.html',controller: 'ProjectController' }) .state('projects.create',{ url: '/projects/create',templateUrl: 'templates/projects/create.html',controller: 'ProjectController' }); }]);
我遇到的问题是,当我加载第三个状态“projects.create”时,浏览器不会使用我的js / app.js主模块引导角度.它会触发错误:“警告:试图加载角度不止一次”.
但是当我加载“项目”状态时,它工作正常.此外,通过测试我意识到,如果我将“projects.create”状态URL更改为“/ createproject”,而不是“/ projects / create”,这就解决了问题.
我假设在尝试加载“js / app.js”和其他本地依赖项时这是一个路径干扰问题.我将如何解决此问题,以便应用依赖关系URL对UI路由器状态是动态的?
的index.PHP
<!DOCTYPE html> <html> <head> <Meta charset="utf-8"> <Meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <Meta name="viewport" content="width=device-width,initial-scale=1"> <title>AngularJS App</title> <!--css--> <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css"/> </head> <body ng-app="scynergyApp"> <div> <div ui-view> </div> </div> </body> <!--js--> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <script src="/js/bootstrap.min.js"></script> <!--angular core--> <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.2.8/angular-ui-router.min.js"></script> <script src="/js/angular-sanitize.js"></script> <script src="/js/underscore.js"></script> <script src="/js/app.js"></script> <!--angular controllers--> <script src="/js/controllers/HomeController.js"></script> <script src="/js/controllers/ProjectController.js"></script> </html>
routes.PHP文件
<?PHP // ============================================= // HOME PAGE =================================== // ============================================= Route::get('/',function(){ return View::make('index'); }); // ============================================= // API ROUTES ================================== // ============================================= Route::group(array('prefix'=>'/api'),function(){ Route::post('login','AuthController@Login'); Route::get('logout','AuthController@logout'); Route::resource('projects','ProjectsController',array('except' => array('create','edit','update'))); }); // ============================================= // CATCH ALL ROUTE ============================= // ============================================= // all routes that are not home or api will be redirected to the frontend // this allows angular to route them App::missing(function($exception) { return View::make('index'); });
解决方法
看起来你没有那个模板可用,所以它落入了你的全部App :: missing,它再次呈现整个页面.
再次加载页面时,您还会再次运行其所有链接的资源,因此您尝试再次运行角度. Angular检测到这个,然后吠叫.
只需确保在指定的URL上有该模板文件,一切都会好的.
AngularJS angular ui router – 将自定义数据传递给控制器
.state('tab.dash',{ url: '/dash',views: { 'tab-dash': { templateUrl: 'templates/tab1.html',controller: 'QuestionsCtrl' //,resolve: { type: '.net' } } } }) .state('tab.friends',{ url: '/friends',views: { 'tab-friends': { templateUrl: 'templates/tab1.html',resolve: { type: 'sql' } } } })
我想将一个不同的自定义属性传递给上面两个路由,因为它们使用相同的Controller和View,以区分它.我尝试了很多东西.请帮忙怎么做!
解决方法
.state('tab.dash',data: { customData1: 5,customData2: "blue" },data: { customData1: 6,customData2: "orange" },resolve: { type: 'sql' } } } })
在控制器中,您可以按如下方式获取数据值
function QuestionsCtrl($state){ console.log($state.current.data.customData1); console.log($state.current.data.customData2); }
在这里阅读有关此主题的更多信息https://github.com/angular-ui/ui-router/wiki/Nested-States-%26-Nested-Views#inherited-custom-data
angularjs – Angular $routeParams是空白的
var napp = angular.module('Napp',['ngResource']); var CompanyCtrl = function($scope,$routeParams,$location,$resource) { console.log($routeParams); }; napp.config(['$routeProvider',function($routeProvider) { $routeProvider .when('/company/edit/:id',{templateUrl: '/partials/edit',controller: 'CompanyCtrl'} ); }]);
和HTML:
<div ng-controller="CompanyCtrl"></div>
当我记录$routeParams时,它出现空白.当我使用.otherwise(),它会加载我在那里指定的任何东西.任何想法我失踪了?
$locationProvider.html5Mode(true);
这应该修复你的起始代码.然后调整代码以支持非pushState浏览器.
希望这可以帮助!
angularjs – Angular 2中的状态参数(Angular 1&ui-router)的等价物是什么?
Router,RouteParams,RouterLink和RouteData似乎没有处理这个问题,例如我想将用户对象从一个状态传递到另一个状态
<a ui-sref="home({user: myCtrl.user})">
这在Angular 2中似乎不可能.
解决方法
<a [routerLink]="['/ProductDetail',{id: 1234}]">Product Details</a>
在这种情况下,id是你的状态,它可以是任何对象,例如:
<a [routerLink]="['/ProductDetail',myStateObject]">Product Details</a>
另一方面,Angular 2有一种机制,可以使用绑定传递参数到组件的@input()参数,但这只能在同一路径中使用.
angularjs – Angular Laravel项目的CORS问题
虽然我已经创建了传递正确标头的中间件,但它不起作用.
class Cors { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request,Closure $next) { return $next($request) ->header('Access-Control-Allow-Origin','*') ->header('Access-Control-Allow-Credentials','true') ->header('Access-Control-Allow-Methods','GET,POST,PUT,DELETE,OPTIONS') ->header('Access-Control-Allow-Headers','X-Requested-With,Content-Type,X-Auth-Token,Origin,Authorization'); } }
任何人都可以帮助我吗?
解决方法
1.
您为每个API调用路由定义OPTIONS方法,并使其通过您创建的中间件,如下所示:
Route::options('todos/{any?}',['middleware' => 'cors',function(){return;}]); Route::options('projects/{any?}',function(){return;}]);
2
你破解Laravel核心类文件,以便它为每个OPTIONS请求传递CORS头.
在里面
/vendor/laravel/framework/src/framework/Illuminate/Routing/RouteCollection.PHP
你会发现以下功能
protected function getRouteForMethods($request,array $methods) { if ($request->method() == 'OPTIONS') { return (new Route('OPTIONS',$request->path(),function () use ($methods) { return new Response('',200,['Allow' => implode(',',$methods)]); }))->bind($request); } $this->methodNotAllowed($methods); }
将此函数更新为以下内容,以便它将为OPTIONS请求传递CORS标头
protected function getRouteForMethods($request,[ 'Allow' => implode(',$methods),'Access-Control-Allow-Origin' => '*','Access-Control-Allow-Credentials' => 'true','Access-Control-Allow-Methods' => 'GET,OPTIONS','Access-Control-Allow-Headers' => 'X-Requested-With,Authorization',]); }))->bind($request); } $this->methodNotAllowed($methods); }
所以对我来说,两种解决方案都可行.选择是你的.
但解决方案#2是Laravel核心上的黑客攻击,如果升级Laravel本身可能会遇到一些问题?但至少它编码较少. :d
希望这些解决方案有所帮助.
今天的关于angularjs – Angular Laravel UI-Router问题和angular-ui-router的分享已经结束,谢谢您的关注,如果想了解更多关于AngularJS angular ui router – 将自定义数据传递给控制器、angularjs – Angular $routeParams是空白的、angularjs – Angular 2中的状态参数(Angular 1&ui-router)的等价物是什么?、angularjs – Angular Laravel项目的CORS问题的相关知识,请在本站进行查询。
本文标签: