GVKun编程网logo

如何通过AngularJS路由保留数据?(angularjs 路由)

14

在本文中,您将会了解到关于如何通过AngularJS路由保留数据?的新资讯,同时我们还将为您解释angularjs路由的相关在本文中,我们将带你探索如何通过AngularJS路由保留数据?的奥秘,分析

在本文中,您将会了解到关于如何通过AngularJS路由保留数据?的新资讯,同时我们还将为您解释angularjs 路由的相关在本文中,我们将带你探索如何通过AngularJS路由保留数据?的奥秘,分析angularjs 路由的特点,并给出一些关于angularjs – Activeadmin采用角度js路由,而不是rails路由、angularjs – Angular Firebase:如何快速加载大量数据?、angularjs – Angular Js路由谷歌Chrome问题、angularjs – Angular2 @ angular / router 3.0.0-alpha.3 – 路由更改时如何获取路由名称或路径的实用技巧。

本文目录一览:

如何通过AngularJS路由保留数据?(angularjs 路由)

如何通过AngularJS路由保留数据?(angularjs 路由)

我是AngularJS的新手,正在尝试为自己构建一个简单的小应用程序。我有正在使用抓取的应用程序的JSON数据$resource,并且该数据在多个视图/路由之间应该相同。但是,当我转到新路线时,JSON数据(存储为$scope.data)不再可用于新视图。我该怎么做才能将此数据传递到新视图,而无需再次获取?(本教程的电话目录应用程序每次都会根据我的判断重新获取此数据。)

据我了解,$rootScope可以做到这一点,但似乎人们对此并不满意。如果这没有什么意义,我深表歉意。我在这里深处潜水。

答案1

小编典典

使用服务存储数据。将该服务注入需要访问此数据的每个控制器中。每次创建并执行控制器时(因为您切换到另一个视图/路线),它都可以向服务请求数据。如果服务还没有数据,它可以向服务器发出请求,并向控制器返回承诺(有关操作方法,请参见下文)。如果服务包含数据,则可以立即将其返回给控制器。

请注意,服务是单例的,与控制器不同。

另一个变体:创建服务时,它可以去获取数据本身,然后将其存储以备后用。控制器可以比$ watch服务上的属性或功能。

angularjs – Activeadmin采用角度js路由,而不是rails路由

angularjs – Activeadmin采用角度js路由,而不是rails路由

我有一个现有的应用程序与Rails 3.2.17和角js.我想在现有的应用程序中包含Activeadmin.

我按照active-admin post from ryan bates的步骤进行操作.
我执行了以下过程:

>在Gemfile中添加了gem activeadmin
>运行捆绑安装
> rails g active_admin:install –skip-users(因为我已经有了设计)
>运行rake db:migrate
>重新启动服务器

如果我运行rake路线,我有以下路线:

admin_root             /admin(.:format)                                                           admin/dashboard#index
          admin_dashboard GET    /admin/dashboard

当我去localhost:3000 / admin.页面被重定向到角度主页,其中包含以下代码:

<div ng-view></div>

我可以将activeadmin的视图添加到angular的路径,但它没有任何视图,只有app / admin / dashboard.rb,它由rails应用程序中的application.html.erb呈现.但是,我没有application.html.erb,因为我的应用程序主要基于angular.js.任何人都可以帮我解决这个问题,我怎么能跳过角度路线并占用rails路线来渲染activeadmin页面?

解决方法

您不需要将activeadmin添加到角度路径,可以组合使用角度路径和轨道路径.默认情况下,Angular路由有“#”,而rails路由则没有.一种可能性是你试图通过删除这里所涵盖的’#’来美化你的角度路线 https://scotch.io/quick-tips/pretty-urls-in-angularjs-removing-the-hashtag

如果这就是你所做的,它可能会搞乱铁路路线.

angularjs – Angular Firebase:如何快速加载大量数据?

angularjs – Angular Firebase:如何快速加载大量数据?

我正在使用AngularJS和Firebase.

目标:我想显示Firebase中的所有数据(固定数量的项目:~1600).

问题:AngularFire调用“已加载”大约需要10秒钟.数据大约120 kb,我觉得这可能会更快. (例如,从.json文件加载数据集需要大约一秒钟).

有没有办法加快速度?

解决方法

如果您不需要监听数据的更新,可以使用 REST API,只需对firebase引用.json执行$http.get()请求:

$http.get('https://dinosaur-facts.firebaseio.com/dinosaurs.json')
.success(function(dinos) {
    console.log('The dinosaurs are coming!',dinos);
});

不确定大量数据会有多快,但可能值得一试.

angularjs – Angular Js路由谷歌Chrome问题

angularjs – Angular Js路由谷歌Chrome问题

使用下面提到的Code1在角度Js中进行基本路由并获得“ XMLHttpRequest无法加载交叉源请求仅支持协议方案:http,数据,chrome扩展,https,chrome-extension-resource”错误并且我们必须使用本地Web服务器解析相同的和下载的MAMP并保持我的html [login.html]在htdocs文件夹中启动服务器并用Code2中提到的[localhostURL / AngularJs / login.html’]替换templateUrl并获得错误错误:[ $sce:insecurl]下面给出了确切的错误,指导我在Google Chrome中修复相同的任何解决方案…

代码1

的index.html

<!DOCTYPE html>
 <html>
    <head>
    <title>Test</title>
    </head>
    <body ng-app="plunker">
    <div ng-view=""></div>    
    <script src="angular.min.js"></script>
    <script src="angular-route.js"></script>
    <script src="app.js"></script>  
   </body>
 </html>

app.js

var app = angular.module('plunker',['ngRoute']);
  app.config(function ($routeProvider) {
  $routeProvider.when('/login',{
        controller: '',templateUrl: 'login.html'
    }).otherwise({ 
        redirectTo: '/login' 
    });
 });

的login.html

Hello from login!

码2

所有其他事情都与app.js中的更改相同

var app = angular.module('plunker',['ngRoute']);
   app.config(function ($routeProvider) {
   $routeProvider.when('/login',templateUrl: 'http://localhost:8888/AngularJs/login.html'
    }).otherwise({ 
        redirectTo: '/login' 
    });
});

错误代码1: –
XMLHttpRequest无法加载file:// localhost / Users / karthicklove / Documents / Aptana Studio 3 Workspace / Object_Javascript / Angular_Js / Routing / login.html.交叉源请求仅支持协议方案:http,chrome-extension-resource.

错误代码2: – [$sce:insecurl] http://errors.angularjs.org/1.2.26/ $sce / insecurl?p0 = http:// localhost:8888 / AngularJs / login.html出错(本机)

我得到了类似的错误.我得到了一个解决方案,我们不能在AngularJS中使用Routing将它保存在你的文件系统中. (即)file:/// C:/Users/path/to/file.html?r = 4383065’如果您使用此URL运行,您将收到错误.路由提供程序将使用http协议.因此,您必须将代码放在localhost中,然后从浏览器localhost / foldername / index.html运行.不要直接从文件夹中运行它

并且还像这样更改模板URL

templateUrl: '/AngularJs/login.html'

如果你有疑问在这里发布.

angularjs – Angular2 @ angular / router 3.0.0-alpha.3 – 路由更改时如何获取路由名称或路径

angularjs – Angular2 @ angular / router 3.0.0-alpha.3 – 路由更改时如何获取路由名称或路径

我正在尝试在路由更改时获取app.component中的当前路由名称或路由路径,以便我可以将路由名称用作包装器div周围的页面类.我正试图找出解决这个问题的最佳方法.以前我订阅了路由器更改属性,就像我在下面列出的那样,但似乎不再提供@ angular / router 3.0.0-alpha.3.如果有人有任何想法或建议,我将非常感激.

this.router.changes.subscribe((val) => {
  var path = this._location.path();
  if (path.indexOf('page-name') !== -1) {
    this.page;
  }
})

解决方法

史蒂夫的答案是目前记录的答案,但是ActivatedRoute上的url可观察对我来说并不是因为我第一次点击基本网址(例如:从/ index到/ index / item工作,但是从/ index / item到index) / item / 2,索引/仪表板,甚至/索引都没有).

我不确定以下解决方案是否是最佳实践,性能影响是什么,但我能够通过以下方式获取路由器的NavigationEnd事件上的活动路由:

import { Component,OnInit,OnDestroy } from '@angular/core';
import { ROUTER_DIRECTIVES,Router,NavigationEnd } from '@angular/router';

@Component({
    selector: 'navbar',directives: [ROUTER_DIRECTIVES],template: `
                ...
              `    
})

export class NavBarComponent implements OnInit,OnDestroy {
    private sub: any;

    constructor(private router: Router) {
    }

    ngOnInit() {
        this.sub = this.router.events.subscribe(e => {
            if (e instanceof NavigationEnd) {
                console.log(e.url);
            } 
        });
    }


    ngOnDestroy() {
        this.sub.unsubscribe();
    }
}

无论您在网址树中的深度或导航到/从的位置,每次更改路径时都会触发此操作.

今天关于如何通过AngularJS路由保留数据?angularjs 路由的讲解已经结束,谢谢您的阅读,如果想了解更多关于angularjs – Activeadmin采用角度js路由,而不是rails路由、angularjs – Angular Firebase:如何快速加载大量数据?、angularjs – Angular Js路由谷歌Chrome问题、angularjs – Angular2 @ angular / router 3.0.0-alpha.3 – 路由更改时如何获取路由名称或路径的相关知识,请在本站搜索。

本文标签: