Question

Je ne peux pas faire les directives les plus simples de travailler dans mon projet Angularjs + Coffeescript.

J'ai ce code dans Directives.coffee:

'use strict'
app_name = "myApp"
app = angular.module "#{app_name}.directives", []

# Directive to include the version number of my project
app.directive 'appVersion', [
'version', (version) ->
    (scope, element, attrs) ->
    element.text version
]

# Hello world directive
app.directive 'hello', () ->
    restict: 'E'
    template: '<div>Hello World</div>'

et dans mon modèle, quand je fais

<span app-version></span>
<hello></hello>

Ensuite, le numéro de version apparaît (0.1), indiquant que la première directive fonctionne correctement, mais la balise ne se fait pas remplacer par rien.

Une idée de ce que j'ai mal fait?

J'ai aussi essayé cela, ce qui n'a pas fonctionné non plus:

# Hello world directive
app.directive 'hello', ->
    class Habit
        constructor: ->
            restict: 'E'
            template: '<div>Hello World</div>'

Était-ce utile?

La solution

Vous avez une faute de frappe:

restict: 'E'

devrait être

restrict: 'E'

Code de travail: http://plnkr.co/edit/8TIFPS2EMYPLO4WL7YTK?p=Preview

Autres conseils

Vous pouvez également écrire votre directive angulaire à CoffeScript comme celui-ci, qui, à mon avis, est plus propre:

class MyDirective
    constructor: (myService) ->
        // Constructor stuff
        @controller = MyController
        @controllerAs = 'ctrl'
    restrict: 'E'
    replace: true
    scope:
        attributeStuff: '='
    link: (scope, element, attr) ->

angular.module('my_module').directive 'MyDirective', (myService) ->
    new MyDirective(myService)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top