2015-07-04 72 views
1

我正在尝试将AngularJS整合到我的应用程序的一部分中,我在URL /events/something下有任何东西需要通过角路由来处理。不过,我一直在关注Angular的教程和this,除非我似乎无法获得视图渲染。我认为我在路由上做错了什么,但我似乎无法弄清楚。谁能帮我吗?混淆角和轨道一起路由

样本链接:http://localhost:3000/events/events1

Rails的路线:

get '/events/:id' => 'event#event' 

角代码:

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

app.config(['$routeProvider', 
    function($routeProvider) { 
     $routeProvider.when('events/:id', { 
      templateUrl: 'eventTemp.html', 
      controller: 'EventsCtrl' 
     }); 
    } 
]); 
app.controller('EventsCtrl', function($scope, $http){ 
    console.log('yo!'); //this is never logging 
}); 

外模板:

<div class = "event" ng-app="eventsApp"> 
    <div ng-view></div> 
</div> 

eventTemp.html

<h1>Text</h1> 

我使用的angular-rails-templates宝石,我有我的app/assets/javascripts/templates所有模板。这是application.js的样子:

//= require jquery 
//= require jquery.turbolinks 
//= require jquery_ujs 
//= require bootstrap-sprockets 
//= require_tree . 
//= require angular-rails-templates 
//= require_tree ./templates 
//= require turbolinks 

回答

0

我发挥它周围,原来东西是错误的

$routeProvider.when('events/:id' 

当我改变的方法是:

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

app.config([ 
    '$routeProvider', function($routeProvider) {  
    $routeProvider. 
    when('/', { 
     templateUrl: '../templates/eventTemp2.html', 
     controller: 'EventsCtrl2' 
    }). 
    otherwise({ 
     templateUrl: '../templates/eventTemp.html', 
     controller: 'EventsCtrl' 
    }); 
    } 
]); 
app.controller('EventsCtrl', function($scope, $http){ 
    console.log('yo!'); 
}); 

app.controller('EventsCtrl2', function($scope, $http) { 
    console.log('yo2'); 
}); 

EventsCtrl2eventTemp.html2得到渲染。

0

您的Angular应用程序与模板位于同一目录吗?如果没有,templateUrl需要是正确的路径。

templates/eventTemp.html 
+0

我试着按照你的建议,但它没有工作 – Andrew

1

我碰到一个类似的问题一次,并将该溶液是这样的 - 利用:

$routeProvider('/events/:id') 

代替

$routeProvider('events/:id') 

显然,角需要被路由路径开始与/

+0

是啊我想通过尝试大量的不同组合的URL匹配... 谢谢无论如何! – Andrew