对于angularjs–使用$http加载json数据时的Angular-grid感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍angular.json,并为您提供关于angularjs–An
对于angularjs – 使用$http加载json数据时的Angular-grid感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍angular.json,并为您提供关于angularjs – Angular $http vs service vs ngResource、angularjs – Angular 2 DI,使用自定义Http、angularjs – Angular JS $http未在范围内定义、angularjs – Angular JS:JSON数据未显示在ng-Grid中的有用信息。
本文目录一览:- angularjs – 使用$http加载json数据时的Angular-grid(angular.json)
- angularjs – Angular $http vs service vs ngResource
- angularjs – Angular 2 DI,使用自定义Http
- angularjs – Angular JS $http未在范围内定义
- angularjs – Angular JS:JSON数据未显示在ng-Grid中
angularjs – 使用$http加载json数据时的Angular-grid(angular.json)
下面是我的javascript文件’filebrowser.js’:
var filebrowserModule = angular.module('filebrowser',['agGrid']); filebrowserModule.controller('filebrowserController',function($scope,$http) { $scope.rowData=[ ]; $http.get("http://localhost:8080/KKR/flow/sin/allSins.json") .success(function(data) { $scope.rowData=JSON.parse("["+JSON.stringify(data)+"]"); console.log($scope.rowData); }); /* $scope.rowData=[ {"group":true,"data":{"name":"joe"},"children":[ {"group":true,"data":{"name":"pat"},"children":[{"group":true,"data":{"name":"maya"},"children":[{"group":false,"data":{"name":"brook"},"children":[]},{"group":true,"data":{"name":"kery"},"data":{"name":"santosh"},"children":[]}]}]}]},{"group":false,"data":{"name":"aravind"},"children":[]}]} ] */ var columnDefs = [ {headerName: "Name",field: "name",width: 250,cellRenderer: { renderer: 'group',innerRenderer: innerCellRenderer }},{headerName: "Size",field: "size",width: 70,cellStyle: sizeCellStyle},{headerName: "Type",field: "type",width: 150},{headerName: "Date Modified",field: "dateModified",width: 150} ]; $scope.gridOptions = { columnDefs: columnDefs,rowData: $scope.rowData,rowSelection: 'multiple',rowsAlreadyGrouped: true,enableColResize: true,enableSorting: true,rowHeight: 20,icons: { groupExpanded: '<i/>',groupContracted: '<i/>' },onRowClicked: rowClicked }; $scope.selectedFile = 'Select a file below...'; function rowClicked(params) { var node = params.node; var path = node.data.name; while (node.parent) { node = node.parent; path = node.data.name + '\\' + path; } $scope.selectedFile = path; } function sizeCellStyle() { return {'text-align': 'right'}; } function innerCellRenderer(params) { var image; if (params.node.group) { image = params.node.level === 0 ? 'disk' : 'folder'; } else { image = 'file'; } var imageFullUrl = '/example-file-browser/' + image + '.png'; return '<img src="'+imageFullUrl+'"/> ' + params.data.name; } });
下面是我的html文件:
<!DOCTYPE html> <html> <head lang="en"> <Meta charset="UTF-8"> <!-- Bootstrap --> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap-theme.min.css"> <link href="//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet"> <link href="styles/angular/filebrowser.css" rel="stylesheet"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js"></script> <!-- <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.8/angular.min.js"></script> --> <script src=" https://ajax.googleapis.com/ajax/libs/angularjs/1.4.7/angular.js"></script> <!-- you don't need ignore=notused in your code,this is just here to trick the cache --> <script src="scripts/angular/ag-grid.js?ignore=notused10"></script> <link rel="stylesheet" type="text/css" href="styles/angular/ag-grid.css?ignore=notused10"> <link rel="stylesheet" type="text/css" href="styles/angular/theme-fresh.css?ignore=notused10"> <script src="scripts/angular/filebrowser.js"></script> </head> <body ng-app="filebrowser"> <div ng-controller="filebrowserController"> <divhttps://www.jb51.cc/tag/ott/" target="_blank">ottom: 2px; background-color: white;"> {{selectedFile}}</div> <divag-grid="gridOptions"https://www.jb51.cc/tag/bro/" target="_blank">browser"> </div> </div> </body> </html>
看看这个例子“Further Example Starting Point”来看看.
代码是
$scope.gridOptions.api.setRows(res.data);
angularjs – Angular $http vs service vs ngResource
从我的理解$ http请求是低级别,但非常灵活和可配置,而处理RESTful API ngResource对象使交流非常简单。
我想我所询问的是一个非常简单的场景,说从服务器(对象数组的GET请求)检索数据是更有效的简单地使用$ http请求,而不是包装在服务(应该是这样的情况吗?)或使用ngResource对象?
任何想法在这里将不胜感激。例如,一个$ http响应可以被缓存,一个ngResource?谢谢。
使用$ http或$ resource,结果仍然可以缓存,你指出了在你的问题中真正使用一个的原因。如果你有一个RESTful接口,那么使用$ resource是更好的,因为你最终会写一个RESTful接口常见的样板代码,如果你不使用RESTful服务,那么$ http更有意义。您可以通过http://www.pseudobry.com/power-up-http-with-caching/缓存数据
我认为将$ http或$资源请求放入服务通常工作更好,因为您想要访问来自多个位置的数据,该服务作为单身。所以,基本上你可以处理任何类型的缓存,你想要做的,控制器都可以只看到相应的服务来更新自己的数据。我发现一个$ watch在控制器中的数据服务和返回promise从我的服务的方法的组合给我最大的灵活性,如何更新控制器中的东西。
我会把这样的东西在我的控制器中,在控制器定义的顶部注入exampleService。
angular.module("exampleApp",[]).service('exampleService',["$http","$q",function ($http,$q) { var service = { returnedData: [],dataLoaded:{},getData = function(forceRefresh) { var deferred = $q.defer(); if(!service.dataLoaded.genericData || forceRefresh) { $http.get("PHP/getSomeData.PHP").success(function(data){ //service.returnedData = data; //As Mark mentions in the comments below the line above Could be replaced by angular.copy(data,service.returnedData); //if the intention of the watch is just to update the data //in which case the watch is unnecessary and data can //be passed directly from the service to the controller service.dataLoaded.genericData = true; deferred.resolve(service.returnedData); }); } else { deferred.resolve(service.returnedData); } return deferred.promise; },addSomeData:function(someDataToAdd) { $http.post("PHP/addSomeData.PHP",someDataToAdd).success(function(data){ service.getData(true); }); } }; service.getData(); return service; }]).controller("ExampleCtrl",["$scope","exampleService",function($scope,exampleService){ //$scope.$watch(function() {return exampleService.returnedData},function(returnedData){ // $scope.myModel.someData = returnedData; //}); //if not using angular.copy() in service just use watch above $scope.myModel.someData = exampleService.returnedData; }]);
这里还有一个来自Angular团队的最佳实践的视频,我仍然在重新观看,慢慢吸收。
http://www.youtube.com/watch?v=ZhfUv0spHCY
特别关于服务vs控制器:
http://www.youtube.com/watch?v=ZhfUv0spHCY&t=26m41s
angularjs – Angular 2 DI,使用自定义Http
import { Injectable } from '@angular/core'; import { Inject } from '@angular/core'; import { Http,Headers,Response } from '@angular/http'; @Injectable() export class OrdeRSService { constructor(@Inject(Http) private http:Http) {} ... }
以及使用它的组件
import { Component } from '@angular/core'; import { FormBuilder,Validators } from '@angular/common'; import { HTTP_PROVIDERS } from '@angular/http'; import { Router} from '@angular/router'; import { OrdeRSService } from '../services/orders.service' @Component({ selector: 'login',templateUrl: './login.component.html',providers: [ HTTP_PROVIDERS,//{ provide: Http,useClass: Http } AuthService,AuthStore,OrdeRSService ] }) export class LoginComponent { constructor(private authService: AuthService,private ordeRSService: OrdeRSService){} .... }
这有效.我有一些注释掉的文字{提供:Http,useClass:Http}.我想在这里提供我自己的课程,扩展Http,但仍然具有所有相同的依赖性.我在这里采取的第一步是明确使用Http.
一旦我取消评论此文本(并添加一个http导入),一切都会中断.我收到错误“没有ConnectionBackend的提供者”.似乎HTTP_PROVIDERS刚刚停止作为提供者工作.
>如何明确使用Http工作?
>如何使用自己的CustomHttp并在HTTP_PROVIDERS中使用提供程序?
解决方法
providers: [ ConnectionBackend,provide( Http,{ useFactory: ( backend: XHRBackend,defaultOptions: RequestOptions) => new CustomHttp(backend,defaultOptions),deps: [XHRBackend,RequestOptions] }),]
我有同样的问题,这为我解决了.
编辑:
如果您使用RC5,则不需要导入HTTP_PROVIDERS,因为您将导入HttpModule,但我不完全记得RC4中是否需要HTTP_PROVIDERS.你可能会需要它.
angularjs – Angular JS $http未在范围内定义
Uncaught ReferenceError: $http is not defined main.js:18 (anonymous function) main.js:18 (anonymous function) sdk.js:1 window.SC.SC.Helper.merge.Dialog.AbstractDialog.AbstractDialog.handleReturn sdk.js:1 window.SC.SC.Helper.merge.Dialog._handleDialogReturn sdk.js:1 window.SC.SC.Helper.merge.connectCallback
这是我在main.js中进行调用的地方
angular.module('soundSelectahApp') .controller('MainCtrl',function ($scope) { $scope.apiKey = "#############################"; $scope.results = []; $scope.init = function(){ SC.initialize({ client_id: $scope.apiKey,redirect_uri: "http://localhost:9000/callback.html" }); // initiate auth popup SC.connect(function() { SC.get('/me',function(me) { alert('Hello,' + me.username); }); $http.jsonp('https://api.soundcloud.com/me.json?client_id=' + $scope.apiKey + '&callback=JSON_CALLBACK').success(function(data) { console.log(data); }).error(function(error) { console.log(error); }); }); }; });
我忽略了什么吗?我不应该在我的$scope.init()中使用$http.jsonp()吗?这是否意味着我超出了范围?
解决方法
.controller('MainCtrl',function ($scope,$http) {
angularjs – Angular JS:JSON数据未显示在ng-Grid中
"[{\"Name\":\"FirsT_NAME\",\"Value\":\"FirsT_NAME\"},{\"Name\":\"CURRENT_DATE_TIME\",\"Value\":\"CURRENT_DATE_TIME\"},{\"Name\":\"CLIENTID\",\"Value\":\"CLIENTID\"},{\"Name\":\"CALLMODE\",\"Value\":\"CALLMODE\"},{\"Name\":\"new 321\",\"Value\":null}]"
当我尝试将数据分配给ng-grid时,每个字符填充在不同的行上.以下是我写的javascript:
var guidesRespApp = angular.module('guidesRespApp',['ngGrid']); //Get Data from restful API. guidesRespApp.controller('MyCtrl',function ($scope,$http) { $http.get('/api/datadictionary').success(function (thisdata) { $scope.myData = thisdata; }); $scope.filterOptions = { filterText: '',useExternalFilter: true,}; //Setting grid options $scope.gridOptions = { data: 'myData',multiSelect: true,filterOptions: { filterText: '',useExternalFilter: false },enableRowReordering: false,showGroupPanel: false,maintainColumnRatios: false,groups: [],showSelectionCheckBox: true,showFooter: true,enableColumnResize: true,enableColumnReordering: true }; // $scope.totalFilteredItemsLength = function() { // //return self.filteredRows.length; // }; });
如果手动分配如下,数据将显示在网格中:
$scope.myData = [{"Name":"FirsT_NAME","Value":"FirsT_NAME"},{"Name":"CURRENT_DATE_TIME","Value":"CURRENT_DATE_TIME"},{"Name":"CLIENTID","Value":"CLIENTID"},{"Name":"CALLMODE","Value":"CALLMODE"}];
任何人都可以帮助我了解如何解决?
此外,当我键入filtertext中的值时,我还想显示已过滤的项目的计数.
$http.get('http://localhost:12143/api/datadictionary').success(function (thisdata) { //Convert data to array. var myData = $.parseJSON(JSON.parse(thisdata)); $scope.myData = myData; });
甚至var myData = $.parseJSON(angular.fromJson(thisdata));也工作.只需我们首先解析数据(为此我使用JSON.parse()),然后转换为数组(为此我使用$.parseJSON()).
关于angularjs – 使用$http加载json数据时的Angular-grid和angular.json的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于angularjs – Angular $http vs service vs ngResource、angularjs – Angular 2 DI,使用自定义Http、angularjs – Angular JS $http未在范围内定义、angularjs – Angular JS:JSON数据未显示在ng-Grid中等相关内容,可以在本站寻找。
本文标签: