2014-11-05 3 views
0

Я хочу иметь сайт шаблона в AngularJs с/example/car/id, где в разных идентификаторах есть страница для разных автомобилей. В app.js я писал:Страницы с угловым шаблоном

angular 
    .module('carApp', [ 
    'ngCookies', 
    'ngResource', 
    'ngRoute', 
    ]) 
    .config(function ($routeProvider) { 
    $routeProvider 
     .when('/', { 
     templateUrl: 'views/main.html', 
     controller: 'MainCtrl' 
     }) 
     .when('/car/:id', { 
     templateUrl: 'views/car.html', 
     controller: 'CarCtrl' 
     }) 
    }); 

В Json я сделал 2 машины:

[{ 
"model": "Audi", 
"year": "1999" 
} 
{ 
"model": "BMW", 
"year": "2005" 
}] 

В car.js

angular.module('carApp') 
.controller('CarCtrl', ['$scope','$http', function($scope, $http) 
{  
    $http.get('scripts/controllers/cars.json').success (function(data){ 
    $scope.cars = data; 
}); 

}] 
); 

Где и какой код мне нужно написать, чтобы иметь шаблоны, где в примере/автомобиль/1 будут показаны подробности об Audi, а пример/автомобиль/2 покажет подробности о BMW?

+1

Вы должны включать в себя идентификатор в формате JSON для каждого автомобиля, если вы хотите использовать id в URL-адресе. В противном случае я бы предложил использовать модель. Чтобы перейти на страницу jsut, используйте ссылку krs8785

+0

, а затем в html, как я могу ее получить? car [{{id}}]. Имя и угловой будет знать, что, если его пример/автомобиль/1, идентификатор равен 1, и читать подробности с первого объекта? или мне нужно сделать еще больше магии? –

ответ

1

Вы можете прочитать параметры с помощью $routeParams и поместить их в строке запроса на ваш URL или использовать эту версию на $ Http:

$http({ 
    url: user.details_path, 
    method: "GET", 
    params: {user_id: user.id} 
}); 

https://stackoverflow.com/a/13760360/20126

1

Предполагая, что вы бы иметь какое-то таблицу или список отображения автомобиля для пользователя, чтобы выбрать вы могли бы иметь что-то вроде

<div ng-controller="carCtrl"> 
    <ul ng-repeat = "car in cars"> 
     <li> <a href ="#/cars/{{car.model}}> {{car.model}} </a></li> 
    </ul>   
</div> 

Так что это создаст список автомобилей, которые пользователь может Село кт. При нажатии на ссылку он перейдет на страницу этой модели. (Обратите внимание, что я не использую идентификатор здесь, потому что вы не имеете идентификатор в вас JSON)

+0

Хорошо, спасибо, что помогли. Я добавил также идентификаторы в Json и просто последний вопрос, как я могу написать об автомобиле №1 в html:/car/1, так на этой странице будет показана его модель и годы? {{cars.model}} {{cars [id] .model}} или что, потому что два не работают –

0

Я изменил CarCrl, чтобы выглядеть следующим образом:

angular.module('motoApp') 
.controller('CarCtrl', ['$scope','$http', '$routeParams', function($scope, $http, 
     $routeParams) {  
    $http.get('scripts/controllers/cars.json').success (function(data){ 
     $scope.car = data[$routeParams.id]; 
    }); 

}] 
); 

И изменил JSON в словарь:

{ 
"1": { 
    "model": "Audi", 
    "year": "2012", 

"2": { 
    "model": "BMW", 
    "year": "2012", 
} 
} 

и это то, чего я хотел достичь. Теперь в HTML у меня есть:

<p>{{ car.model }}</p> 
<p>{{ car.year }}</p> 

и когда я посещаю/автомобиль/1 он показывает подробную информацию о Audi и/автомобиля/2 есть BMW

Смежные вопросы