【问题标题】:Writing Angular factory with CoffeeScript Class style用 CoffeeScript 类风格编写 Angular 工厂
【发布时间】:2014-02-12 09:40:34
【问题描述】:

最近我正在尝试通过编写一个小应用程序来学习 AngularJs 和 CoffeeScript。
在阅读了一些博客之后,我可以使用 CoffeeScript 类风格编写 Angular 控制器和服务。以下是控制器的示例。

libr = angular.module('libr.controllers.main', [])
class MainController
  @$inject: ['$scope']
  constructor: (@$scope) ->
    @$scope.test = test
  test: ()->
    console.log 'Hello'
libr.controller 'MainCtrl', MainController

而且效果很好。

但我无法使用 Coffee Class 样式成功转换 Angular 工厂。

var app = angular.module('app', ['ngResource', 'ngRoute']);

// Some APIs expect a PUT request in the format URL/object/ID
// Here we are creating an 'update' method 
app.factory('Notes', ['$resource', function($resource) {
  return $resource('/notes/:id', null,
      {
          'update': { method:'PUT' }
      });
}]);

此代码是来自AngularJs官网的示例代码:http://docs.angularjs.org/api/ngResource.$resource

谁能帮我把它转换成 CoffeeScript Class 风格?

【问题讨论】:

  • “刚刚遇到了一些问题”——你能描述一下这个问题吗?
  • 抱歉我的描述不清楚。问题是我无法将示例 Angular 工厂转换为 CoffeeScript 类样式。

标签: javascript angularjs coffeescript angularjs-factory


【解决方案1】:

那个工厂里的代码太少了,我真的不明白把它变成一个类的意义。

app = angular.module("app", ["ngResource", "ngRoute"])

app.factory "Notes", ["$resource", ($resource) ->
    $resource("/notes/:id", null, { update: { method: "PUT" } })
]

但是话虽如此,如果您想将咖啡脚本类用于一般服务(它不适用于工厂,因为它们是单例),您可以执行以下操作:

class Foo
  constructor: ($someDependency) ->
    @myVar = "hello"

  bar: ->
    console.log @myVar

app.service("Foo", ['$someDependency', Foo])

【讨论】:

    【解决方案2】:
    class Notes
      url = "/notes/:id"
      constructor:(@$resource) ->
        return $resource url, {id: "@id"}, { update: {method: "PUT"} } 
    
    
    angular.module("app").factory "Notes", ["$resource", Notes]
    

    【讨论】:

      猜你喜欢
      • 2014-06-08
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      • 2011-09-06
      • 2012-01-22
      • 2013-11-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多