2014-02-12 4 views
4

최근에 작은 응용 프로그램을 작성하여 AngularJs 및 CoffeeScript를 배우려고합니다.
일부 블로그를 읽은 후 CoffeeScript Class 스타일로 Angular 컨트롤러와 서비스를 작성할 수 있습니다. 다음은 컨트롤러의 예입니다.CoffeeScript 클래스 스타일로 각도 팩토리 작성하기

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

그리고 잘 작동합니다.

그러나 커피 클래스 스타일을 사용하여 성공적으로 다음과 같이 각도 팩토리를 변환 할 수 없습니다. http://docs.angularjs.org/api/ngResource.$resource

사람이 나에게 커피 스크립트 클래스 스타일로 변환하는 데 도움이 수 :

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와 공식 웹 사이트에서 코드?

+0

"문제가 발생했습니다"- 문제를 설명해 주시겠습니까? – jcollum

+0

불명확 한 설명에 대해 사과드립니다. 문제는 샘플 Angular factory를 CoffeeScript Class 스타일로 변환 할 수 없다는 것입니다. – Junv

답변

3

그 공장에는 코드가 거의 없기 때문에 클래스로 만드는 것이 실제로 이해가되지 않습니다.

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]