1
このコードがangularjs 1.2.0-rc.2ではうまく動作するが、それ以降のバージョンではうまくいかない理由は分かりません(私は1.2.0、1.4.9、1.5.7で試しました)角度バージョンの問題と約束
index.htmlを
<body ng-app="MyApp">
<h1>Open Pull Requests for Angular JS</h1>
<ul ng-controller="DashboardCtrl">
<li ng-repeat="pullRequest in pullRequests">
{{ pullRequest.title }}
</li>
</ul>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0-rc.2/angular.js"></script>
<!--<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.js"></script>-->
<!--<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.9/angular.min.js"></script>-->
<!--<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.7/angular.min.js"></script>-->
<script src="scripts/app.js"></script>
</body>
スクリプト/私は約束を再されていることを確認することができ、デバッグ
'use strict';
var app = angular.module('MyApp', []);
app.controller('DashboardCtrl', ['$scope', 'GithubService',function($scope, GithubService) {
$scope.pullRequests = GithubService.getPullRequests();
}]);
app.factory('GithubFactory', ['$q', '$http',function($q, $http) {
var myFactory = {};
myFactory.getPullRequests = function() {
var deferred = $q.defer();
$http.get('https://api.github.com/repos/angular/angular.js/pulls')
.success(function(data) {
deferred.resolve(data); // Success
})
.error(function(reason) {
deferred.reject(reason); // Error
});
return deferred.promise;
}
return myFactory;
}]);
をapp.js解決されましたが、データは表示されません... 約束を使用する正しい方法は何ですか?
うん:
$http
サービスは、すでにあなたのための1を返しますので、あなたはdeferred
オブジェクトとの約束を構築するべきではありません! Promise auto-unwrapは、1.2.0-rc.3以降で廃止されました。https://docs.angularjs.org/guide/migration#angular-expression-parsing-parse-interpolate- – electblake