0
我是Angular的新手,對Promise有點困惑。我創建了一個自定義指令,它應該顯示來自遠程Web服務的信息。
這裏是負責數據檢索工廠:
myAppModule.factory('Data', function ($http)
{
var PID = 7499;
return $http({method: "GET", url: "http://localhost:7001/Nama/services/helloworld/bookingInit", params: {pid: PID}});
});
這是應該顯示的信息,從該服務傳來的指令:
myAppModule.directive("timePeriods", function()
{
return {
restrict: 'E',
templateUrl: 'timePeriods.html',
controllerAs: 'periodsCtrl',
controller: ['Data', function (Data)
{
Data.success(function (res)
{
this.periods = res.appointments;
});
}]
}
});
終於在這裏是爲指令的模板:
<table class="table table-bordered" ng-class="'noselect'">
<td colspan="2">
<h4>TIMESLOTS</h4>
</td>
<tr ng-repeat="period in periodsCtrl.periods">
<td>
<div>{{period.start | date : 'hh:mm'}} - {{period.end | date : 'hh:mm'}}</div>
</td>
</tr>
</table>
所以我希望從服務的信息是dis玩過一張桌子,但是當頁面呈現時這張桌子是空的..
this.periods = res.appointments; 你的情況中的「this」被引用到$ http.success函數的作用域,而不是你的指令作用域。 您應該爲您的控制器注入$ scope並設置爲 $ scope.periods = res.appointments。 – OctoD 2014-09-23 09:06:23
@OctoD,似乎並沒有幫助:我把它改爲: 控制器: '$範圍',函數($範圍) \t \t { \t \t \t $ scope.periods = ... }] – andreybavt 2014-09-23 10:16:14