2017-05-06 141 views
0

我得到一个变量,由$ http.get后面跟着.then,但是当我想在{{variable}}的前端使用它时 - 它变成空的。我正在使用Angular 1.6.4。

我认为这是一个异步的问题,所以我把它包裹起来,然后它应该现在工作。

控制器

mainApp.controller('navBarController', ['$scope', '$http', '$q', function($scope, $http, $q){ 

$scope.profileID = ''; 

var getProfileID = function(){ 
    return $http.get('/session'); 
}; 

getProfileID().then(function(res) { 
    console.log($scope.profileID = res.data.facebookProfileId);//this gives me the profileID as expected 
    $scope.profileID = res.data.facebookProfileId; 
}); 

}]); 

HTML

<div class="navbar-collapse collapse" id="searchbar"> 
    <ul class="nav navbar-nav navbar-right" ng-controller="navBarController"> 
    <li><a href="/profile#/profile{{ profileID }}">Profile</a></li><!--the profileID is empty here--> 
    </ul> 
</div> 

我是缺少在这里?

+2

你试过调试吗?首先将随机值放在你的'profileID'上,看看它是否真的是一个异步问题? – Roljhon

+0

好主意,它隔离与异步无关的问题 - 谢谢。然而,到底发生了什么?我会继续环顾四周,但如果你能想到什么,请大声喊叫。 –

+1

使用'ng-href',同样将值打印到控制台以确保它的定义 – svarog

回答

0

这是因为NodeJS使用{{varName}},Angular也是如此。因此,在最初的app.js的应用程序,我只是说:

app.locals.delimiters = '<% %>'; 

顺便说一句,我用的是公司的霍根-Express的模板引擎。

希望这可以在某些时候派上用场。我当时完全看错了地方。