我是Angular和Java语言的新手,我正在尝试将linkedIn API集成到我的angularJS项目中进行注册,以便使用linkedIn数据自动填充某些表格。我已经对其进行了测试,但是所有内容都在同一文件中(在视图中),如下所示:
<script type="in/login" data-onAuth="onLinkedInAuth"> </script>
<script type="text/javascript">
function onLinkedInAuth() {
IN.API
.Raw('/people/~:(id,firstName,lastName,formatted-name,num-connections,location,positions:(id,title,summary,start-date,end-date,is-current,company:(id,name,type,size,industry,ticker)),summary,email-address,specialties)?format=json')
.method('GET')
.result(getResults)
.error(onError)
};
function getResults(result) {
console.log(result);
document.getElementById('full_name').value = result.formattedName || '';
document.getElementById('local').value = result.location.country.code || '';
document.getElementById('summary').value = result.summary || '';
document.getElementById('email_address').value = result.emailAddress || '';
}
function onError(error) {
console.log(error)
}
</script>
但是现在我想做所有这一切,但是要使用服务和控制器,例如:
按LinkedIn按钮->控制器->服务-> linkeInAPI->服务->控制器->视图(用数据填充表单,在这种情况下为多个视图)。
我已经创建了linkedInService.js,linkedInController.js。
问题是我真的不知道该怎么做,因为我不熟悉这一切。如果有人可以帮助我,那就太好了。 谢谢。
答案 0 :(得分:0)
通常,angularjs项目包含具有各种用途的各种文件。
这是angularjs项目的一个可能的项目结构(取自this网站)请注意,这种结构并不完美,甚至还有更好的方法来构造angularjs代码({{3}中的示例}文章解释得非常好),但这是一个可以开始的简单结构
<div class="container-loading">
<div class="grid">
<div class="user-name">
Username
</div>
<div class="user-image">
<a href="https://www..com/#/profile">
<img class="usrimg" src="https://www.core-studio.de/212img.png">
</a>
</div>
</div>
</div>
所以一个可能的出发点是将所有与linkedin相关的代码添加到LinkedinService中,然后从您的控制器内部调用此LinkedinService:
app/
----- controllers/ --> controllers "glue" together html files with code logic
---------- mainController.js
---------- otherController.js
----- directives/
---------- mainDirective.js
---------- otherDirective.js
----- services/ --> services are reusable functions that you define that can get reused in controllers
---------- userService.js
---------- itemService.js
----- js/
---------- bootstrap.js
---------- jquery.js
----- app.js
views/
----- mainView.html
----- otherView.html
----- index.html
,然后调用您的一个控制器:
.service('LinkedinService', function ($http){
this.loginWithLinkedin = function (){
return IN.API
.Raw('/people/~:(id,firstName,lastName,formatted-name,num-connections,location,positions:(id,title,summary,start-date,end-date,is-current,company:(id,name,type,size,industry,ticker)),summary,email-address,specialties)?format=json').method('GET')
};
我还看到您正在使用LinkedinService.loginWithLinkedin().then(function (data) {
console.log('linkedin login data:', data);
})
更改dom
在angularjs中应避免这种情况,因为它应该使用this