Javascript Can';t获取要在AngularJS视图中显示的ES6承诺值

Javascript Can';t获取要在AngularJS视图中显示的ES6承诺值,javascript,html,angularjs,angular-promise,Javascript,Html,Angularjs,Angular Promise,我正在尝试使用Pinterest JavaScript SDK为项目获取一些pin数据。我在我创建的Pinterest服务中有一个方法,它在我的HomeController中被调用。我尝试将响应放入承诺中,以便将其放在HomeController的$scope上并在我的视图中显示。但是,$scope.pins在我的视图中是未定义的。为什么它未定义?看起来这个承诺正在起作用。仍在学习的承诺 Pinterest服务 家庭控制器 看法 Pinterest {{pin}} 使用$q.将ES6承诺转换为A

我正在尝试使用Pinterest JavaScript SDK为项目获取一些pin数据。我在我创建的Pinterest服务中有一个方法,它在我的HomeController中被调用。我尝试将响应放入承诺中,以便将其放在HomeController的
$scope
上并在我的视图中显示。但是,$scope.pins在我的视图中是未定义的。为什么它未定义?看起来这个承诺正在起作用。仍在学习的承诺

Pinterest服务 家庭控制器 看法
Pinterest
{{pin}}

使用
$q.
将ES6承诺转换为AngularJS承诺:

$q.when(Pinterest.getBoardPins('490329546869188172'))
  .then(function (response) {
    $scope.pins = response.data;
});
AngularJS通过提供自己的事件处理循环来修改正常的JavaScript流。这将JavaScript分为经典和AngularJS执行上下文只有在AngularJS执行上下文中应用的操作才会受益于AngularJS数据绑定、异常处理、属性监视等

要将ES6承诺引入AngularJS执行上下文,请使用
$q.when

$q.when 将可能是值或(第三方)的对象包装为
$q
承诺。当您处理的对象可能是承诺,也可能不是承诺,或者承诺来自不可信任的来源时,这非常有用


交替使用
这将创建一个与AngularJS框架及其摘要周期集成的承诺。

您是否尝试在
PDK.request()中记录
response
?您的
解决(响应)
会被呼叫吗?非常感谢,回答得非常好!这解决了问题,也完全有道理。
Pinterest.getBoardPins('490329546869188172').then(function (response) {
  $scope.pins = response.data;
});
<h1>Pinterest</h1>
<div ng-repeat="pin in pins">
  <div>{{pin}}</div>
</div>
$q.when(Pinterest.getBoardPins('490329546869188172'))
  .then(function (response) {
    $scope.pins = response.data;
});
function getBoardPins (id) {
  //return new Promise(function (resolve, reject) {
  return $q(function (resolve, reject) {
    PDK.request('/v1/boards/' + id + '/pins/', 'GET', {fields: 'id,link,url,creator,board,created_at,note,color,counts,media,attribution,image,metadata'}, function (response) {
      if (response) {
        resolve(response);
      }

      reject();
    });
  });
}