【发布时间】:2016-11-17 09:06:58
【问题描述】:
我有显示菜肴列表的 Menu.html 页面。通过点击每道菜的图片,我想引导用户进入 discdetail.html 页面。但是在dishdetail.html中,角度参数是未知的。
菜单.html:
<div class="tab-content">
<ul class="media-list tab-pane fade in active">
<li class="media" ng-repeat="dish in dishes| filter:filtText">
<div class="media-left media-middle">
<a href="#/menu/{{dish._id}}">
<img class="media-object img-thumbnail" ng-src={{dish.image}} alt="Uthapizza">
</a>
</div>
<div class="media-body">
<h2 class="media-heading">{{dish.name}}
<span class="label label-danger label-xs">{{dish.label}}</span>
<span class="badge">{{dish.price|currency}}</span>
</h2>
<p ng-show="showDetails">{{dish.description}}</p>
</div>
</li>
</ul>
</div>
dishdetail.html:
<div class="row row-content" ng-controller="DishDetailController">
<div class="col-xs-12">
<div class="media-left media-middle">
<a href="#/menu/{{dish._id}}">
<img class="media-object img-thumbnail" ng-src={{dish.image}} alt="Uthapizza">
</a>
</div>
<div class="media-body">
<h2 class="media-heading">{{dish.name}}
<span class="label label-danger label-xs">{{dish.label}}</span>
<span class="badge">{{dish.price|currency}}</span>
</h2>
<p>{{dish.description}}</p>
</div>
</div>
</div>
和 app.js:
'use strict'
angular.module('confusionApp', ['ngRoute'])
.config(['$routeProvider',function($routeProvider) {
$routeProvider
.when('/menu', { // route for the menu pag
templateUrl : 'menu.html', controller : 'MenuController'
})
.when('/menu/:id', { // route for the dish details pag
templateUrl : 'dishdetail.html', controller : 'dishDetailController'
})
.otherwise('/menu');
}]);
controllers.js:
angular.module('confusionApp')
.controller('DishDetailController', ['$scope', '$routeParams',
'menuFactory', function($scope, $routeParams, menuFactory) {
var dish= menuFactory.getDish(parseInt($routeParams.id,10));
$scope.dish = dish;
}]);
和 services.js:
'use strict'
angular.module('confusionApp')
.factory('menuFactory',function(){
var menufac = {};
var dishes=[
{
_id:0,
name:'Uthapizza',
image:'images/uthapizza.png',
category:'main',
label:'Hot',
price:'4.99',
description:'A unique combination of Indian Uthappam (pancake) and Italian pizza topped with cerignola olives, ripe vine charry tomatoes, vidalia onion, Guntour chillies.'
},
{
_id:1,
name:'Elaicheesecake',
image:'images/elaicheesecake.png',
category:'appetizer',
label:'New',
price:'4.99',
description:'A unique combination of Indian Uthappam (pancake) and Italian pizza topped with cerignola olives, ripe vine charry tomatoes, vidalia onion, Guntour chillies.'
}];
menufac.getDishes = function(){
return dishes;
};
menufac.getDish = function(index){
return dishes[index];
};
return menufac;
});
【问题讨论】:
-
而不是在你的工厂方法调用中调用 $routeparams ; var id = $routeparams.id; var disc = menuFactory.getDish(id);
-
@Tom Johnson 在发送到 getDish() 方法之前不需要将 id 转换为整数吗?
-
我从来没有必要这样做,但我不认为这样做有什么害处——如果你有它,它会给你额外的错误处理,这很有用:)跨度>
-
@TomJohnson 没有变化。角度参数仍然未知
-
粘贴一个'调试器;'在你的 menufac.getDish 函数中,并使用 F12 在你的浏览器中打开开发者模式。然后使用 F10 循环浏览这些函数 - 如果调试器被击中,我们会知道调用你的工厂是否有问题。
标签: angularjs ngroute routeparams