サービスから返された配列の項目をテンプレートに表示するのに問題があります。私はコントローラをシンタックスとして正しく使用していると考えています。コントローラ、テンプレート、および自分の.config()$ state(ui-router)ブロックで使用されています。しかし何らかの理由でページ上に何も表示されません。角度コントローラがサービスオブジェクトのプロパティng-repeatをバインドしていません
私はクロムでデバッグしようとしましたが、コントローラにブレークポイントを置いたとき、vm.processesがオブジェクトを保持しましたが(4つのアイテムを持つ配列すべてがチェックアウトされました)、再び何も表示されませんでした/ c vm。コントローラー内の何かを公開するので、テンプレートからアクセスできる必要があります。
私はトラブル$ HTTPを使用してファイル自体をつかんを持った、JSONオブジェクトを返す単純なサービスを定義したので、私はちょうどサービスファイルの値をハードコーディングすることにしました:
.factory('dataservice', function dataservice($http) {
return {
getProcesses: getProcesses
};
function getProcesses() {
// return $http.get('data\processes.json')
// .then(getProcessesComplete)
// .catch(getProcessesFailed);
// function getProcessesComplete(response) {
// return response.data.results;
// }
// function getProcessesFailed(error) {
// console.log('Error retrieving processes. ' + error.data);
// }
return {
"processes": [
{
"name": "mergeFiles",
"id": 1,
"description": "Merge files in /files on server 3",
"scheduledRun": {
"startTime": "2016-06-27T18:25:00",
"endTime": "2016-06-27T18:26:00"
}
},
{
"name": "monthlyImport",
"id": 2,
"description": "Import records on server 1",
"scheduledRun": {
"startTime": "2016-06-01T12:00:00",
"endTime": "2016-06-01T18:05:00"
}
},
{
"name": "tickeTrakBilling",
"id": 3,
"description": "...",
"scheduledRun": {
"startTime": "2016-06-27T19:15:00",
"endTime": "2016-06-27T18:20:00"
}
},
{
"name": "batch092",
"id": 4,
"description": "run batch092.bat on server 4",
"scheduledRun": {
"startTime": "2016-06-27T1:25:00",
"endTime": "2016-06-27T11:26:00"
}
}
]
};
}
});
今コントローラであります構文ように、コントローラを使用して書かれた以下の通り
controller('ProcessController', ProcessController);
function ProcessController(dataservice) {
var vm = this;
var dataService = dataservice;
vm.processes = dataService.getProcesses();
}
今コントローラは、JSONオブジェクトを
を露出させるべきテンプレートは次のとおり
<div class="container" ng-controller="ProcessController as vm">
<div class="job" ng-repeat="process in vm.processes">
<!-- Header [Job Name] -->
<h3 class="job-name">{{ process.name }}</h3>
<!-- Body [Job details] -->
<div class="container">
<p>{{ process.description }}</p>
<ul class="job-details">
<li>
{{ process.scheduledRun.startTime }}
</li>
<li>
{{ process.scheduledRun.endTime }}
</li>
</ul>
</div>
</div>
次のような状態が定義されています
.state('process', {
url: '/:month/:date',
templateUrl: '/app/templates/process.html',
controller: 'ProcessController',
controllerAs: vm
});
私は両方を持つことはできませんでしたが、 $ stateProviderで定義済みの場合は意味があります。残念ながら、これは私の問題を解決しませんでした。 2つの李のショーはそこに何もないが、2つの弾丸ポイント。 – n0tion
これはあなたのサービスからオブジェクト '{processes:[]}'を返して、それを配列 'vm.processes'に割り当てるからです。サービスからの応答を配列に変更するか、コントローラ内でコードを 'vm.processes = dataService.getProcesses()。processes'と変更してください。 –
うわー、私は完全にそれを逃しました。テスト目的のために、オブジェクトを保持し、ドット表記を使用して配列にアクセスするか、単純に配列をサービスから返す方がよいと思いますか? – n0tion