У меня есть 3 представления в моем веб-приложении AngularJs. В представлении View1 я показываю таблицу, которая получает данные от контроллера, нажав кнопку. Если я перейду к другому виду и вернусь к первому виду, я не смогу увидеть таблицу, снова мне нужно нажать кнопку, чтобы получить таблицу в представлении. Итак, мне нужно иметь таблицу в представлении1 при возврате с другой страницы.
controller.js
app.controller('OpenOrdersController', [
'$scope',
'$http',
'salesOrgService',
'dataService',
function($scope, $http, salesOrgService, dataService, $routeParams,
$location, SVC_DOMAIN, IMAGE_BASE) {
console.log("Enter OpenOrdersController");
$scope.data = dataService;
$scope.OpenOrdersSummary = $scope.data.data.responsedata;
$scope.user.model.salesorg = "2015";
$scope.getOpenOrders = function(salesOrg) {
$scope.OpenOrdersSummary = {
"SapExOpenOrderTab" : [ {
"col1" : "0009421175",
"col2" : "000000",
"col3" : "0000"
},
{
"col1" : "0009421820",
"col2" : "000000",
"col3" : "0000",
} ]
};
};
} ]);
app.service('dataService', function() {
this.data = {}
this.data.responsedata = '';
});
index.html
<div>
<button class="btn btn-primary" type="button"
data-ng-disabled="!user.model.salesorg "
data-ng-click="getOpenOrders(user.model.salesorg)">Refresh</button>
</td>
<table
class="table table-hover table-striped table-condensed table-bordered ordersTable">
<thead>
<tr>
<th>Column 1</th>
<th>Column 2</th>
<th>Column 3</th>
</tr>
</thead>
<tbody>
<tr data-ng-hide="OpenOrdersSummary.SapExOpenOrderTab.length > 0"
class="error">
<td colspan="4">
<div class="text-center">
<strong>This request may take some time ; please wait for
response !!! </strong>
</div>
</td>
</tr>
<tr
data-ng-repeat="sampleProductCategorie in OpenOrdersSummary.SapExOpenOrderTab | orderBy:orderby:reverse">
<td>{{sampleProductCategorie.col1}}</td>
<td>{{sampleProductCategorie.col2}}</td>
<td><a
ng-href="#/openOrdersDetail/{{sampleProductCategorie.col1}}">{{sampleProductCategorie.col3}}</a></td>
</tr>
</tbody>
</table>
Здесь я инициализирую объект таблицы в службе на основе некоторых вопросов и назначения данных таблицы в контроллере. Мое требование - когда я возвращаюсь к представлению index.html из другого представления, я хочу видеть предыдущие данные таблицы в представлении index.html. пожалуйста помогите.
Вот как я должен поступать в соответствии с вашим примером.
Как вы отметили в примере, данные ответа жестко запрограммированы, попробуйте иметь http-запрос в службе.
app.service('dataService', ['$http', function($http) {
this.data = {
responsedata: ''
}
this.makeRequest = function() {
//...Use $http to make request and set response from request to this.data.responsedata
}
return this;
}]);
Вот рабочий jsfiddle: http://jsfiddle.net/reggmezb/3/
В приведенном примере данные не поступают из службы. Кажется, он жестко запрограммирован в контроллере и установлен на переменную области OpenOrdersSummary по требованию (нажата кнопка). Если ваши данные в конечном итоге будут жестко закодированы, вы можете отказаться от службы в целом - если в конечном итоге это будет происходить из внешнего источника, то услуга имеет смысл, и вы должны присвоить значение данных переменной service data.servicedata. Это приведет к тому, что данные будут отображаться, как только контроллер будет загружен в линию
$scope.OpenOrdersSummary = $scope.data.data.responsedata;
Если вместо этого вам нужно, чтобы данные были ленивы загружены, вам понадобится служба для реализации какой-либо функции loadData, которая будет устанавливать переменную service.servicedata по запросу.
Если это не уточняется, дайте мне знать, и я могу помочь написать образец кода.