Это простое приложение с 1 изображением, 1 видом, 2 контроллерами и 1 фабрикой.Связь между контроллерами - angularjs
На странице есть два выпадающего списка, где пользователь может выбрать отчет и набор. При выборе любой из них будет отображаться связанная таблица внутри ng-include
. Report1 & Report2 различны в данных & в структуре таблицы. Итак, у меня есть другой html для каждого отчета.
При загрузке страницы по умолчанию выбран отчет Report 1 и Set Set 1. Данные загружаются штрафом. Текст «один» также отображается в консоли. Но, когда я выбираю Set 2, ничего не происходит.
Это потому, что Report1.html уже загружен? Я думаю, что мне нужно использовать общий сервис, но не знаю, как его использовать в этом случае.
index.html:
<div ng-controller="indexCtrl">
<select id="ddlReports" ng-model="ReportId">
<option value="1">Report 1</option>
</select>
<select id="ddlSets" ng-model="SetId" ng-change="ShowReport()">
<option value="1">Set 1</option>
<option value="2">Set 2</option>
</select>
<br/>
<ng-include src="ReportTemplate"></ng-include>
</div>
indexCtrl.js:
$scope.ShowReport = function() {
GlobalVariable.SetId = $scope.SetId;
switch ($scope.ReportId) {
case 1:
$scope.ReportTemplate = "Report1.html";
break;
}
};
Report1.html:
<div ng-controller="Report1Ctrl">
<table>
<thead>
<tr>
<th>#</th>
<th>Mobile No.</th>
<th>Circle</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="response in Report1 track by $index">
<td>{{$index + 1}}</td>
<td>{{response.MobileNo}}</td>
<td>{{response.Circle}}</td>
</tr>
</tbody>
</table>
</div>
Report1Ctrl.js:
//setId is a global variable
console.log("one");
var promise = ReportsFactory.GetReport(GlobalVariable.SetId);
promise.then(function (success) {
if (success.data != null && success.data != '') {
$scope.Report1 = JSON.parse(success.data);
}
else {
console.log(success.data);
}
},
function (error) {
console.log(error);
})
Из того, что я понимаю, нг-включают в себя не регенерируется и или Report1Ctrl.js вызывается снова. Что нужно сделать, чтобы исправить это.
Что вы хотите, чтобы это произошло, когда вы изменили отчет 2? прямо сейчас ваш оператор дела не справляется. – Claies
Я еще не рассматривал отчет 2. Просто пытаюсь исправить проблему с помощью отчета 1. Но в конечном итоге Selecting, Report 2 будет загружать Report2.html (Report2Ctrl.js) – Qwerty
да, но у вас есть несколько вариантов для этого раскрывающегося списка, и сейчас вы обрабатываете только один параметр.Вы не ссылаетесь на «SetId» в любом месте вашего кода, и независимо от того, какое из двух выпадающих меню вызывает функцию, они устанавливают только 'Report1.html'. – Claies