在我的应用程序中,我有一个控制器,它从一个视图中获取一个由 twitter 句柄组成的用户输入,并将其通过我的控制器传递到我的工厂,在那里它被发送到我的后端代码,在那里进行一些 API 调用,最终我想要获取返回的图像 url。
我能够从我的服务器取回图像 url,但我一直在努力尝试将其附加到另一个视图。我试过搞乱 $scope 和我在这里找到的其他不同建议,但我仍然无法让它工作。
我尝试做不同的事情来尝试将图片插入到 html 视图中。我试过注入 $scope 并玩弄它,但仍然没有骰子。我试图不使用 $scope,因为据我了解,最好不要滥用 $scope 而是在视图中使用this
控制器别名 ( controllerAs
)。
我可以验证我的控制器中返回的承诺是我想在我的视图中显示的 imageUrl,但我不知道我哪里出错了。
我的控制器代码:
app.controller('TwitterInputController', ['twitterServices', function (twitterServices) {
this.twitterHandle = null;
// when user submits twitter handle getCandidateMatcPic calls factory function
this.getCandidateMatchPic = function () {
twitterServices.getMatchWithTwitterHandle(this.twitterHandle)
.then(function (pic) {
// this.pic = pic
// console.log(this.pic)
console.log('AHA heres the picUrl:', pic);
return this.pic;
});
};
}]);
这是我的工厂代码:
app.factory('twitterServices', function ($http) {
var getMatchWithTwitterHandle = function (twitterHandle) {
return $http({
method: 'GET',
url: '/api/twitter/' + twitterHandle
})
.then(function (response) {
return response.data.imageUrl;
});
};
return {
getMatchWithTwitterHandle: getMatchWithTwitterHandle,
};
});
这是我的 app.js
var app = angular.module('druthers', ['ui.router']);
app.config(function ($stateProvider, $urlRouterProvider) {
$urlRouterProvider.otherwise('/');
$stateProvider
.state('/', {
url: '/',
templateUrl: 'index.html',
controller: 'IndexController',
controllerAs: 'index',
views: {
'twitter-input': {
templateUrl: 'app/views/twitter-input.html',
controller: 'TwitterInputController',
controllerAs: 'twitterCtrl'
},
'candidate-pic': {
templateUrl: 'app/views/candidate-pic.html',
controller: 'TwitterInputController',
controllerAs: 'twitterCtrl'
}
}
});
});
这是我要附加返回的图像 url 的视图
<div class="col-md-8">
<img class="featurette-image img-circle" ng-src="{{twitterCtrl.pic}}"/>
</div>