текст в контроллере никогда не регистрируется / никогда не запускался Angular Rails

0

Я создаю приложение в Rails, и я использую Angular для части интерфейса, генерируя представления на основе данных, предоставленных в json файле. Я слежу за этим учебным пособием, но я не могу заставить запустить мой контроллер, и я понятия не имею, почему. Может кто-нибудь мне помочь?

Пример ссылки: http://localhost: 3000/events/events1

events.coffee.erb

app = angular.module('EventsApp', ['ui.router', 'templates'])

app.config [
  '$stateProvider'
  '$urlRouterProvider'
  ($stateProvider, $urlRouterProvider) ->
    $stateProvider.state 'events',
      url: '/events/{id}'
      templateUrl: 'templates/_event.html'
      controller: 'EventsCtrl'
]

app.controller 'EventsCtrl', [
    '$scope'
    '$stateParams'
    ($scope, $stateParams) ->
        console.log $stateParams //this never shows up
        console.log 'Sup' //this never shows up
        $scope.greeting = 'Yo' //neither does this
]

events.html.erb

<div ng-app="EventsApp">
    Yo! //this shows up, but not {{greeting}}
    {{greeting}}
    <ui-view></ui-view>
</div>

_event.html

<script type="text/ng-template" id="/event.html">
    <div>
        {{greeting}}
        Yo!
    </div>
</script>

Файл маршрутов Rails:

get "events/*path" => "events#events"

Rails events_controller.rb

class EventsController < ApplicationController
    layout "application"

    def events
    end
end

Макет файла:

--app
-----assets
-------javascripts
----------templates
------------_event.html
----------events.coffee.erb
------views
--------events
----------events.html.erb
Теги:
coffeescript

1 ответ

0

Ваш угловой код плохо структурирован. Я думаю, вы смешиваете свой синтаксис Javascript с вашим синтаксисом Ruby...

Попробуйте что-то ближе к этому:

angular.module('EventsApp', ['ui.router', 'templates'])
  .config(['$stateProvider', '$urlRouterProvider', 
    function($stateProvider, $urlRouterProvider) {
      $stateProvider.state('events', {
        url = '/events/{id}',
        templateUrl: 'templates/_event.html',
        controller: 'EventsCtrl'
      }
    }
  ])
  .controller('EventsCtrl', [
    '$scope', '$stateParams'
    function($scope, $stateParams) {
      console.log($stateParams); 
      console.log('Sup')
      $scope.greeting = 'Yo';
    }
  ]);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню