使用 Angular.js,我正在尝试创建一个按钮,单击该按钮会将成员推送到新的 url(没有页面重新加载),并$routeProvider
设置一些$routeParams
供控制器在对数据进行 JSON 调用时使用。
我$routeProvider
的设置如下:
app.config(function ($routeProvider) {
$routeProvider.when('/list/:base/:keyword', { templateUrl: 'list', controller: 'listCtrl' })
});
这将加载listCtrl
, 使用“列表”模板。在listCtrl
我调用这样的数据:
app.controller('listCtrl', function ($scope, $routeParams, $location, $http) {
console.log('listCtrl called');
$http.get('urlForData&kw=' + $routeParams.keyword).success(function (data) {
$scope.results = data;
});
});
如果我手动点击 url,这很好用 /#/list/baseName/keyword 把所有的权利都$routeParams
放到listCtrl
了 JSON 调用中。
我想让用户点击该路线,在我的homeCtrl
我有一种更改路线的方法,如下所示:
app.controller('homeCtrl', function ($scope, $routeParams, $location) {
var model = {
criteria: 'yakiniku',
base: 'yokota-ab-japan'
};
$scope.model = model;
$scope.changeRoute = function () {
$location.path('/list/' + model.base + '/' + model.criteria);
};
});
我没有将 url 放入changeRoute()
方法中,因为我想根据成员输入到几个输入中的值定向到 url,因此我将模型属性连接到服务.path(url)
上的方法中$location
。
然后我把ng-click="changeRoute()" attribute
一个 HTML <button/>
。但是,当我单击按钮时,我可以看到 url 在一瞬间发生了变化,然后直接切换回根 url。我没有.otherwise()
设置路由,为什么会立即跳回根目录?
另外,我没有引用第三方库,只有 angular。
更新
当我设置使用 Html5 模式时可能需要注意$locationProvider
,它更改了 url 就好了......但由于我在 ASP.NET MVC 站点上托管应用程序,我需要它来使用哈希,而不是 HTML5 模式.
虽然路由更改在 HTML5 模式下工作,但没有哈希标记的 url 上的页面刷新会中断,因为它会干扰 ASP.NET MVC 路由,并且我正在尝试允许深度链接到我的 Angular 应用程序。