我正在尝试在已经存在的 MVC 3 站点中使用 Angular。我已经让我的主要 ngApp 使用第一个加载的项目,但是一旦我添加一个模块并尝试实现$routeParams
它,路由提供程序似乎开始崩溃。在我的 MVC 3 应用程序中,我有一个/Article/ReadArticle/key
允许 key 为 null 的有效路由路由,并且我有一个相应的控制器/操作来传递请求的文章。如果key
为 null 或为空,则提供最新输入的文章。我有另一个发布操作,它做同样的事情,只是它返回一个JsonResult
而不是一个视图。
我修改了我的视图以排除任何 MVC 构造的模型,因此该操作仅返回本质上是一个包含所有角度模板的 html 页面。角度控制器调用 JsonResult 的 post 操作,一切都很顺利。我根据示例在角度模块中添加了路由,但由于某种原因,它似乎没有捕捉到路由:
'use strict';
/* App Module */
angular.module('je', []).
config(['$routeProvider', function ($routeProvider) {
$routeProvider.
when('/Article/ReadArticle/:key', { templateUrl: '/Angular/ArticleView.html', controller: ArticleCtrl }) //.
//otherwise({ templateUrl: '/Angular/ArticleView.html', controller: ArticleCtrl });
} ]);
我评论了这个otherwise
电话。如果我把它留在那里,它会起作用,但只会带来默认文章。手动输入一个有效的路线如/Article/ReadArticle/Some_Valid_Key
不会产生任何合适$routeParams
的。注释掉,似乎没有匹配的路线,因此没有加载模板并且页面是空白的。
function ArticleCtrl($scope, $routeParams, $http) {
console.log($routeParams.key);
$http.post("/Article/GetArticleText", { "textkey": $routeParams.key }).success(function (data) {
console.log(data);
$scope.article = data;
}).
error(function (data, status) {
console.log(data);
console.log("Request failed");
console.log(status);
});
}
根据样本,我的期望是此时$routeParams.key
应该填充Some_Valid_Key
。显然,我的期望与现实不符,但我缺少什么来获得表现的路线?