我知道这已被问了很多次,但我已经检查了其他几个问题和答案,我仍然没有接近解决我的问题.
index.html的:
Github user search
JS/secrets.js:
githubToken = "longGithubTokenThatICannotShareHerePublicly";
secrets.js在.gitignore中.
JS/gitUserSearchController.js:
githubUserSearch.controller('GitUserSearchController', ['$resource', function($resource) { var self = this; var searchResource = $resource('https://api.github.com/search/users/'); var githubToken = githubToken; self.doSearch = function() { self.searchResult = searchResource.get( { q: self.searchTerm, access_token: githubToken } ); }; }]);
当我运行应用程序时,我可以使用浏览器的检查工具看到,http请求是在没有githubToken
字符串的情况下进行的.
当我将githubToken字符串硬编码到gitUserSearchController中时,不是试图让它使用假定的githubToken
全局变量,而是使用GitHub令牌完美地完成http请求.
因此,如何设置文件以及如何声明和访问变量似乎是一个问题.
在这里回购.
当你这样做:
var githubToken = githubToken;
您正在定义一个新的局部变量,它通过相同的名称"隐藏"全局变量.对于任何给定的符号名称,在搜索全局范围之前搜索本地范围,因此与全局同名的本地变量实际上"隐藏"全局.
另外,由于将var
Javascript中的所有定义"提升" 到声明它们的函数作用域的顶部,因此上面的代码行实际上是这样处理的:
var githubToken; githubToken = githubToken;
所以,你可以进一步了解为什么它没有做你想做的事情.
将局部变量的名称更改为不同的或甚至不定义新变量,只需直接使用全局,因为无论如何似乎没有理由分配给局部变量.