我是angular.js的新手,我正在尝试为请求添加一些标头:
var config = {headers: {
'Authorization': 'Basic d2VudHdvcnRobWFuOkNoYW5nZV9tZQ==',
'Accept': 'application/json;odata=verbose'
}
};
$http.get('https://www.example.com/ApplicationData.svc/Malls(1)/Retailers', config).success(successCallback).error(errorCallback);
Run Code Online (Sandbox Code Playgroud)
我查看了所有文档,在我看来这应该是正确的.
当我在网址中使用本地文件时$http.get,我会在Chrome的网络标签上看到以下HTTP请求:
GET /app/data/offers.json HTTP/1.1
Host: www.example.com
Connection: keep-alive
Cache-Control: max-age=0
If-None-Match: "0f0abc9026855b5938797878a03e6889"
Authorization: Basic Y2hhZHN0b25lbWFuOkNoYW5nZV9tZQ==
Accept: application/json;odata=verbose
X-Requested-With: XMLHttpRequest
If-Modified-Since: Sun, 24 Mar 2013 15:58:55 GMT
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22
X-Testing: Testing
Referer: http://www.example.com/app/index.html
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Run Code Online (Sandbox Code Playgroud)
如您所见,两个标头都已正确添加.但是当我将URL更改为$http.get上面显示的URL时(除了使用真实地址,而不是example.com),我得到:
OPTIONS /ApplicationData.svc/Malls(1) HTTP/1.1
Host: www.datahost.net
Connection: keep-alive
Access-Control-Request-Method: GET
Origin: http://mpon.site44.com
User-Agent: …Run Code Online (Sandbox Code Playgroud) 我正在使用AngularJS和Trigger.io为iOS和Android开发移动应用程序.
当我尝试打开如下所示的链接时:
<a ng-href="#/offers/{{featured_offer.Id}}"></a>
Run Code Online (Sandbox Code Playgroud)
它在iOS上运行得很好,但在Android上我在触发器控制台中收到此消息,并且链接未导航到:
[WARNING] Attempted to open a URL which could not be handled: unsafe:content://io.trigger.forge722b6464a0e211e2ba9d12313d00dc45/src/index.html#/offers/8
Run Code Online (Sandbox Code Playgroud)
我怎样才能在Android中使用它与iOS中的相同?
遇到问题,到目前为止无法为看似相似的SO问题找到解决方案.问题是这样的:
使用Trigger.io的forge.ajax,我的Angular.js视图在返回数据后不会更新.我意识到这是因为forge.ajax是一个异步函数,并且在已经显示视图后返回数据.我试图通过使用$ rootScope.apply()更新视图,但它对我不起作用,如我所看到的许多示例中所示.
请参阅下面的Controller代码:
function OfferListCtrl($scope) {
$scope.offers = [];
$scope.fetchOffers = function(callback) {
$scope.offers = [];
var successCallback = function(odataResults) {
var rawJsonData = JSON.parse(odataResults);
var offers = rawJsonData.d;
callback(offers);
};
var errorCallback = function (error){
alert("Failure:" + error.message);
};
forge.request.ajax({
type: 'GET',
url: 'https://www.example.com/ApplicationData.svc/Offers',
accepts: 'application/json;odata=verbose',
username: 'username',
password: 'password',
success: successCallback,
error: errorCallback
});
};
$scope.fetchOffers(function(offers) {
$scope.offers = offers;
forge.logging.info($scope.offers);
});
}
Run Code Online (Sandbox Code Playgroud)
其中的所有代码都运行正常,$ scope.offers将填充来自数据库的Offer数据.日志功能显示数据正确,格式正确.
我已尝试在逻辑位置(以及一些不合逻辑的位置)使用$ rootScope.apply(),但无法使视图更新.如果你有任何想法我可以让它工作,我将不胜感激.
编辑:添加HTML
HTML在下面.注意按钮的ng-click ="refresh()".这只是一种解决方法,所以我至少可以看到数据.它调用一行刷新函数,执行$ rootScope.apply(),它会更新视图.
<div ng-controller="OfferListCtrl">
<h1>Offers</h1>
<ul>
<li ng-repeat="offer …Run Code Online (Sandbox Code Playgroud)