Angularjs 使用ES6在Angular中创建模型

Angularjs 使用ES6在Angular中创建模型,angularjs,ecmascript-6,Angularjs,Ecmascript 6,我想做的是用ES6创建一个模型(例如Book),该模型可以用一些参数实例化(NewBook('someTitle'))。我已经让它与以下内容一起工作(假设我们需要注入一些东西,比如$http): 问题是,这似乎不是一种干净的做事方式。我也不确定会有什么问题。有谁能提出更好的方法来实现同样的目标吗?我在Typescript中完成了这项工作,在这里,我没有将类包装在函数中,而是使用了一个静态工厂函数,它为类返回工厂。。。这样看起来会干净一点。看起来像这样 class Book { constr

我想做的是用ES6创建一个模型(例如Book),该模型可以用一些参数实例化(NewBook('someTitle'))。我已经让它与以下内容一起工作(假设我们需要注入一些东西,比如$http):


问题是,这似乎不是一种干净的做事方式。我也不确定会有什么问题。有谁能提出更好的方法来实现同样的目标吗?

我在Typescript中完成了这项工作,在这里,我没有将类包装在函数中,而是使用了一个静态工厂函数,它为类返回工厂。。。这样看起来会干净一点。看起来像这样

class Book {
   constructor(public $http) {}

   set(title) {
      this.title = title;
   }

   fetch() {
       return this.$http.get('api/book/' + this.title);
   }

   static factory () {
      let service = ($http) => {
         return new Book($http);
      }

      service.inject = ['$http'];
      return service;
   } 
}

angular.module('app')
       .service('Book', Book.factory());

另一种让它看起来非常干净的方法是他们在Angular2中所做的是使用ES2016/2017装饰器,它们目前正在使用Typescript。不管怎样,这只是个主意

谢谢你的回复。我希望用title(例如newbook('someTitle')实例化模型,但在您的方法中,Book是用$http构建的,您需要调用set(title)要设置标题…为什么你有一个
foo
函数?你可以直接在工厂中返回类本身。这会让事情变得更清楚。angular1就是这样做的。顺便说一句,我不知道这个问题与es6有什么关系。使用es5类也是一样的。
class Book {
   constructor(public $http) {}

   set(title) {
      this.title = title;
   }

   fetch() {
       return this.$http.get('api/book/' + this.title);
   }

   static factory () {
      let service = ($http) => {
         return new Book($http);
      }

      service.inject = ['$http'];
      return service;
   } 
}

angular.module('app')
       .service('Book', Book.factory());