У меня есть список предметов, отображаемых с помощью службы, используя ng-repeat. Все эти элементы имеют ссылку «полная информация о деталях» (item.html). Общая страница, на которой будет отображаться дополнительная информация.Угловые данные прохода на отдельную страницу
Что было бы лучшим способом передать данные элемента, нажатого на item.html, чтобы информация отображалась на выбранном элементе?
HTML выглядит следующим образом:
<div class="container" ng-app="myApp">
<div ng-controller="ItemController">
<div ng-repeat="item in data.details">
<div class="wrapper">
<h3>{{item.title}}</h3>
<p>{{item.description}}</p>
<a href="#myModal" class="btn" openmodal>Open modal</a>
<a href="item.html">View full item details</a>
</div>
</div>
</div>
</div>
Угловые
var myApp = angular.module('myApp', []);
myApp.factory('Data', function(){
var Data = {};
Data.details = [
{
"id": 1,
"title": "Item 1",
"description": "Post 1 description - Nullam ac tellus sed mi laoreet placerat.",
"more": "more info"
},
{
"id": 2,
"title": "Item 2",
"description": "Post 2 description - Cociis natoque penatibus et magnis dis parturient montes.",
"more": "more info"
},
{
"id": 3,
"title": "Item 3",
"description": "Post 3 description - Nullam ac tellus sed mi laoreet placerat.",
"more": "more info"
}
]
return Data;
});
// Controller
function ItemController($scope, Data){
$scope.data = Data;
}
Заранее спасибо
EDIT
Я создал свои маршруты, HTML-страницу для каждого маршрута, затем использую ng-view, чтобы показать соответствующий контент.
Смотрите мой код ниже:
// Routes
myApp.config(function($routeProvider){
$routeProvider
.when('/', {
templateUrl:"home.html"
})
.when('/task', {
templateUrl:"item.html"
})
})
// Controller
function ItemController($scope, $location, Item){
$scope.data = Item;
$scope.viewDetail = function(item) {
$scope.currItem= item;
$location.path('/item');
}
}
Теперь index.html выглядит следующим образом:
<div class="container">
<ng-view></ng-view>
</div>
Затем я создал отдельные файлы для моих маршрутов:
home.html
<div class="container" ng-app="myApp">
<div ng-controller="ItemController">
<div ng-repeat="item in item.details">
<h3>{{item.title}}</h3>
<a ng-click="viewDetail(item)">View full item details</a>
</div>
</div>
</div>
item.html
<div class="container" ng-app="myApp">
<div ng-controller="ItemController">
<h3>{{currItem.title}}</h3>
<p>{{currItem.description}}</p>
</div>
</div>
Моя ссылка (подробности Посмотреть полный товар) в home.html использует нг щелчок, чтобы передать «элемент» объект щелкнул.
Теперь я хотел бы использовать этот предмет объекта в item.html console.log (item) дает мне правильный объект.
Я попытался использовать «currItem» в item.html, чтобы отобразить правильные данные. Это не работает.
Не уверен, что мне здесь не хватает?
Он также может использовать локальное хранилище (HTML5). Я думаю, что если вы добавите это, вы укажете все возможное. –
@ Langdon, Спасибо за ваш ответ. Я бы пошел по Угловому пути. У меня еще несколько вопросов. См. Мое редактирование. – John
@Patrice Посмотреть мое редактирование. – Langdon