javascript – Typescript应该由服务提供的角度访问参数
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – Typescript应该由服务提供的角度访问参数,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2906字,纯文字阅读大概需要5分钟。
内容图文
我访问变量时遇到问题,应由服务解决.如果我在html中使用此变量直接使用angular是没有问题的,但是当我想在方法中使用它时,我就变成了什么.服务很好,它是http休息服务电话.
这是控制器:
///<reference path='../domain/DocumentEntity.ts' />
///<reference path='../_app.ts'/>
module domain {
import DataAccessService = domain.DataAccessService;
import IDocument = domain.IDocument;
import DocumentEntity = domain.DocumentEntity;
import IEntity = domain.IEntity;
import Structure = domain.Structure;
interface IDocListController {
response: IEntity;
locations: IEntity;
structures: IStructure[];
}
export class DocController implements IDocListController {
title: string;
response: domain.IEntity;
locations: domain.IEntity;
structures: IStructure[];
static $inject = ["DataAccessService", "$scope"];
constructor(private dataAccessService: DataAccessService, $scope) {
this.title = "Document Listing";
//test
var documentResource = dataAccessService.getDataResource();
documentResource.query((data: domain.IEntity) => {
this.response = data;
});
$scope.vm = this;
console.log($scope.vm);
if (!this.response || !this.response.folders.length) {
console.log("NO RESPONSE RETURNING NOTHING");
return;
}
this.structures = this.createFolderStructure(this.response.folders, 4);
console.log(this.structures);
}
createFolderStructure(folders: IFolder[], depth: number): IStructure[] {
var structures: Structure[] = [];
for (var i = 0; i < folders.length; i++) {
let str: Structure = new Structure();
str.id = folders[i].id.toPrecision();
str.isFolder = true;
str.name = folders[i].name;
str.structures = this.createFolderStructure(folders, depth - 1);
structures.push(str);
}
console.log(structures);
return structures;
};
}
服务看起来像这样:
/// <reference path='../_app.ts' />
module domain {
import DocumentEntity = domain.DocumentEntity;
export interface IDataAccessService {
getDataResource(): ng.resource.IResourceClass<IEntityResource>;
}
export interface IEntityResource extends ng.resource.IResource<domain.Entity> {
}
export class DataAccessService implements IDataAccessService {
//minification protection
static $inject = ["$resource"]
constructor(private $resource: ng.resource.IResourceService) {
console.log("DataAccessService Constructor");
}
getDataResource(): ng.resource.IResourceClass<IEntityResource> {
console.log("REST CALL");
return this.$resource("http://localhost:8080/services/name/:searchId/documents/", {searchId: "12345678"}, {
'query': {
method: 'GET',
isArray: false
}
});
}
}
angular.module("common.services", ["ngResource"]);
}
解决方法:
我用$promise.then结构替换了控制器构造函数中的part,如下所示:
documentResource.query((data: domain.IEntity) => {
this.response = data;
}).$promise.then((data)=> {
if (this.response.folders) {
this.structures = [];
for (let i = 0; i < this.response.folders.length; i++) {
if(this.response.folders){
Array.prototype.push.apply(this.structures,this.createFolderStructure(this.response.folders, 4));
}
}
console.log(this.structures);
}
}
);
内容总结
以上是互联网集市为您收集整理的javascript – Typescript应该由服务提供的角度访问参数全部内容,希望文章能够帮你解决javascript – Typescript应该由服务提供的角度访问参数所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。