Suche…


Winkel mit Schienen 101

Schritt 1: Erstellen Sie eine neue Rails-App

gem install rails -v 4.1
rails new angular_example

Das Entfernen von Turbolinks erfordert das Entfernen aus dem Gemfile.

gem 'turbolinks'

Entfernen Sie die require aus app/assets/javascripts/application.js :

//= require turbolinks

Schritt 3: Fügen Sie AngularJS zur Asset-Pipeline hinzu

Damit Angular mit der Rails-Asset-Pipeline arbeiten kann, müssen wir der Gemfile Folgendes hinzufügen:

gem 'angular-rails-templates'
gem 'bower-rails'

Führen Sie nun den Befehl aus

bundle install

Fügen Sie bower damit wir die AngularJS-Abhängigkeit installieren können:

rails g bower_rails:initialize json

Hinzufügen von Angular zu bower.json :

{
  "name": "bower-rails generated dependencies",
  
  "dependencies": {

    "angular": "latest",
    "angular-resource": "latest",
    "bourbon": "latest",
    "angular-bootstrap": "latest",
    "angular-ui-router": "latest"
  }
}

Nun, da bower.json mit den richtigen Abhängigkeiten eingerichtet ist, installieren wir sie:

bundle exec rake bower:install

Schritt 4: Organisieren Sie die Angular App

Erstellen Sie die folgende Ordnerstruktur in app/assets/javascript/angular-app/ :

templates/
modules/
filters/
directives/
models/
services/
controllers/

app/assets/javascripts/application.js in app/assets/javascripts/application.js die require für Angular, den Vorlagenhelfer und die Angular-App-Dateistruktur hinzu. So was:

//= require jquery
//= require jquery_ujs

//= require angular
//= require angular-rails-templates
//= require angular-app/app

//= require_tree ./angular-app/templates
//= require_tree ./angular-app/modules
//= require_tree ./angular-app/filters
//= require_tree ./angular-app/directives
//= require_tree ./angular-app/models
//= require_tree ./angular-app/services
//= require_tree ./angular-app/controllers

Schritt 5: Starten Sie die Angular App

Erstellen Sie app/assets/javascripts/angular-app/app.js.coffee :

@app = angular.module('app', [ 'templates' ])

@app.config([ '$httpProvider', ($httpProvider)->
$httpProvider.defaults.headers.common['X-CSRF-Token'] = $('meta[name=csrftoken]').attr('content') ])  @app.run(->   console.log 'angular app running' )

Erstellen Sie ein Angular-Modul unter app/assets/javascripts/angular-app/modules/example.js.coffee.erb :

@exampleApp = angular.module('app.exampleApp', [     # additional dependencies here   ])   .run(->     console.log 'exampleApp running'   )

Erstellen Sie einen Angular-Controller für diese App unter app/assets/javascripts/angular-app/controllers/exampleCtrl.js.coffee :

angular.module('app.exampleApp').controller("ExampleCtrl", [   '$scope',   ($scope)->     console.log 'ExampleCtrl running'      $scope.exampleValue = "Hello angular and rails"  ])

Fügen Sie nun eine Route zu Rails hinzu, um die Kontrolle an Angular zu übergeben. In config/routes.rb :

Rails.application.routes.draw do   get 'example' => 'example#index' end

Generieren Sie den Rails-Controller, um auf diese Route zu reagieren:

rails g controller Example

In app/controllers/example_controller.rb :

class ExampleController < ApplicationController
    def index
    end
end

In der Ansicht müssen wir angeben, welche Angular-App und welcher Angular-Controller diese Seite steuert. Also in app/views/example/index.html.erb :

<div ng-app='app.exampleApp' ng-controller='ExampleCtrl'>
  
  <p>Value from ExampleCtrl:</p>
  <p>{{ exampleValue }}</p>
  
</div>

Starten Sie Ihren Rails-Server und besuchen Sie http: // localhost: 3000 / example , um die App anzuzeigen.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow