Tag: angular

构造函数和ngOnInit的区别

Angular默认提供生命周期钩子ngOnInit 。 任何人都可以告诉我有关ngOnInit的用法,如果我们已经有一个constructor ?

将angular色2(testing版)中的服务注入另一个服务的最佳方式是什么?

我知道如何将一个服务注入一个组件(通过@Component),但是我怎样才能使用DI在组件之外传递服务呢? 换句话说,我不想这样做: export class MyFirstSvc { } export class MySecondSvc { constructor() { this.helpfulService = new MyFirstSvc(); } } export class MyThirdSvc { constructor() { this.helpfulService = new MyFirstSvc(); } }

AngularJS:用asynchronous数据初始化服务

我有一个AngularJS服务,我想用一些asynchronous数据进行初始化。 像这样的东西: myModule.service('MyService', function($http) { var myData = null; $http.get('data.json').success(function (data) { myData = data; }); return { setData: function (data) { myData = data; }, doStuff: function () { return myData.getSomeData(); } }; }); 显然,这是行不通的,因为如果在myData返回之前试图调用doStuff() ,我将得到一个空指针exception。 据我所知,在这里和这里提出的其他一些问题,我有几个select,但没有一个看起来很干净(也许我错过了一些东西): 安装服务与“运行” 当设置我的应用程序这样做: myApp.run(function ($http, MyService) { $http.get('data.json').success(function (data) { MyService.setData(data); }); }); 然后我的服务将如下所示: myModule.service('MyService', function() { var […]

angular.service vs angular.factory

我已经看到angular.factory()和angular.service()用于声明服务; 然而,我不能在官方文档中的任何地方find angular.service 。 这两种方法有什么区别? 哪些应该用于什么(假设他们做不同的事情)?

重新加载页面给AngularJS HTML5模式提供了错误的GET请求

我想为我的应用程序启用HTML5模式。 我已经把下面的代码放在configuration中,如下所示: return app.config(['$routeProvider','$locationProvider', function($routeProvider,$locationProvider) { $locationProvider.html5Mode(true); $locationProvider.hashPrefix = '!'; $routeProvider.when('/', { templateUrl: '/views/index.html', controller: 'indexCtrl' }); $routeProvider.when('/about',{ templateUrl: '/views/about.html', controller: 'AboutCtrl' }); 正如你所看到的,我使用了$locationProvider.html5mode并且在ng-ref中我改变了所有的链接来排除/#/ 。 问题 目前,我可以去localhost:9000/并看到索引页面,并导航到其他页面,如localhost:9000/about 。 但是,刷新localhost:9000/about页面时会发生此问题。 我得到以下输出: Cannot GET /about 如果我看networking电话: Request URL:localhost:9000/about Request Method:GET 而如果我第一次去localhost:9000/然后点击一个button导航到/about我得到: Request URL:http://localhost:9000/views/about.html 它使页面完美呈现。 我怎样才能启用angular度得到正确的页面,当我刷新? 先谢谢你。

$ location / html5和hashbang模式/链接重写之间的切换

我的印象是,Angular会重写出现在临时标签内的锚标签的href属性中的URL,使得它们可以在html5模式或hashbang模式下工作。 位置服务的文档似乎说HTML链接重写照顾的hashbang的情况。 因此,我期望在不使用HTML5模式时,插入哈希值,而在HTML5模式下,则不会。 但是,似乎没有重写正在发生。 下面的例子不允许我改变模式。 应用程序中的所有链接都需要手动重写(或者在运行时从variables派生出来)。我是否需要根据模式手动重写所有URL? 我没有看到在Angular 1.0.6,1.1.4或1.1.3中有任何客户端的URL重写。 似乎所有的href值都需要用#/作为hashbang模式和/ html5模式。 是否有一些configuration需要重写? 我误解了文档吗? 做别的事情傻吗? 这是一个小例子: <head> <script src="../../../ajax/libs/angular.js/1.1.3/angular.js"></script> </head> <body> <div ng-view></div> <script> angular.module('sample', []) .config( ['$routeProvider', '$locationProvider', function ($routeProvider, $locationProvider) { //commenting out this line (switching to hashbang mode) breaks the app //– unless # is added to the templates $locationProvider.html5Mode(true); $routeProvider.when('/', { template: 'this […]

如何使用Angular的jQuery?

任何人都可以告诉我,如何使用Angular的 jQuery ? class MyComponent { constructor() { // how to query the DOM element from here? } } 我知道有一些解决方法,比如先操纵DOM元素的类或者id ,但是我希望能有一个更干净的方法来实现它。

如何将从后端渲染的parameter passing给angular2引导方法

有没有办法将后端呈现的parameter passing给angular2引导方法? 我想为所有使用BaseRequestOptions和后端提供的值的请求设置http头。 我的main.ts文件如下所示: import { bootstrap } from '@angular/platform-browser-dynamic'; import { AppComponent } from "./app.component.ts"; bootstrap(AppComponent); 我发现如何将这个parameter passing给根组件( https://stackoverflow.com/a/35553650/3455681 ),但我需要它时,我正在bootstrap方法…任何想法? 编辑: webpack.config.js内容: module.exports = { entry: { app: "./Scripts/app/main.ts" }, output: { filename: "./Scripts/build/[name].js" }, resolve: { extensions: ["", ".ts", ".js"] }, module: { loaders: [ { test: /\.ts$/, loader: 'ts-loader' } ] } […]

Firebase查询子项的子项是否包含值

表的结构是: 聊天logging – > randomId – > – >参与者 – > – > – > 0:'name1' – > – > – > 1:'name2' – > – > chatItems 等等 我想要做的是查询聊天表,find所有通过传入的用户名string保持参与者的聊天。 这是我到目前为止: subscribeChats(username: string) { return this.af.database.list('chats', { query: { orderByChild: 'participants', equalTo: username, // How to check if participants contain username } }); }

AngularJS:调用$ scope时,防止错误$ digest正在进行中$ apply()

我发现我需要手动更新我的页面到我的范围越来越多,因为build立一个angular度的应用程序。 我知道这样做的唯一方法是从我的控制器和指令的范围调用$apply() 。 这个问题是它一直向控制台抛出一个错误: 错误:$摘要已在进行中 有谁知道如何避免这个错误,或以不同的方式实现相同的事情?