我正在尝试构建一个AngularJS / Rails多页面应用程序而不使用ngView-基本上,我想在我的rails应用程序中使用Angular的数据绑定和其他功能,同时仍然拥有由我的Rails路由确定的视图。到目前为止,它工作正常,但我的主要问题是从我的Angular框架中访问我的rails路由参数。有没有办法以Angular友好的方式访问URL /参数?我不想诉诸于window.location。
例如,假设我在localhost:3000 / articles / 1,我的视图将对应app / views / article / show.html.erb
<div class='articleContainer' ng-controller='ArticleController'>
<div class='articleTitle' ng-bind='article.title'></div>
<div class='articleBody' ng-bind='article.body'></div>
</div>
这是我的ArticleController在传统的Angular设置中的样子。
var ArticlesControllers = angular.module('ArticlesControllers', ['ngSanitize']);
ArticlesControllers.controller('ArticleController', ['$scope', '$routeParams',"$http","$browser","$sniffer","$rootElement", "$location",
function($scope, $location, $http, $resource){
$http.get('/articles/'+$routeParams.articleId+'.json').success(function(data) {
$scope.article = data["article"];
$scope.comments = data["comments"];
});
}
]);
不幸的是,如果我没有使用ngView,$ routeParams似乎不起作用。有没有一种干净的方法来重新创建$ routeParams.articleId而不诉诸window.location?谢谢你。
答案 0 :(得分:0)
将article id嵌入到articleContainer div的数据元素中,如下所示:
<div class='articleContainer' ng-controller='ArticleController' id='articleContainer' data-article-id=<% =@article.id.to_s %> >
<div class='articleTitle' ng-bind='article.title'></div>
<div class='articleBody' ng-bind='article.body'></div>
</div>
我在div中添加了一个id,以便通过javascript轻松引用。
然后,在您的javascript中,在您需要时检索该数据元素:
(假设jQuery)
var articleId = $('#articleContainer').data('article-id');