【发布时间】:2014-03-05 20:49:32
【问题描述】:
我已经尝试了解 Emberjs 有一段时间了,我已经完成了“入门”链接上的“待办事项”应用程序,我已经阅读了所有文档,并且我已经从“Ember in行动”的书。
现在我正在尝试自己做一些事情,结果发现我遇到了各种各样的问题,所以我将从这篇文章的第一个开始。
我想出了以下模板:
<body>
<script type="text/x-handlebars" data-template-name="user-navigation">
<ul id="userNavigation">
{{#if isAuthenticated}}
<li>Welcome {{userName}}</li>
<li>{{#link-to "awesome.index"}}logout{{/link-to}}</li>
<li><a href="#">Settings</a></li>
{{else}}
<li>{{#link-to "awesome.login"}}login{{/link-to}}</li>
<li><a href="#">sign up</a></li>
{{/if}}
</ul>
</script>
<script type="text/x-handlebars" data-template-name="awesome/index">
{{#if isAuthenticated}}
<section id="userWidgets">
<div>
<button id="createNewWidget">Create New Widget</button>
</div>
<div>
<ul>
{{#each widget}}
<li><a href="#">{{widgetName}}</a></li>
{{/each}}
</ul>
</div>
</section>
<section id="selectedWidget">
</section>
{{else}}
<div id="welcome">Welcome to my awesome Site. You should sing up!</div>
{{/if}}
</script>
<script type="text/x-handlebars" data-template-name="awesome/login">
<ul id="mainLoginOptions">
<li><button class="link-button" {{action 'facebookLogin'}}>Login with Facebook</button></li>
</ul>
</script>
<script type="text/x-handlebars" id="application">
<header id="siteHeader">
<div id="logo" class="index-logo">My awesome SPA</div>
<div id="userData" class="index-userdata">
{{render "user-navigation" user}}
</div>
</header>
<section id="mainContent">
{{outlet}}
</section>
<footer id="footer" class="index-footer"><div class="index-footer-content">Copyright 2014</div></footer>
</script>
</body>
基本上它是顶部的标题,带有“登录/注册”或“注销/设置”链接,具体取决于用户是否登录。并在主要内容部分显示“欢迎”消息或登录用户的内容。
我正在尝试弄清楚如何处理登录工作流,以便标题模板正确呈现,并且主要内容与用户数据一起呈现。我在看this link to get ideas,但我仍然有很多关于如何实现它的问题。
我的 JavaScript 代码如下所示:
window.Awesome = Ember.Application.create({
LOG_TRANSITIONS: true
});
Awesome.Router.map(function() {
this.resource("awesome", {path: "/"}, function(){
this.route('login');
});
});
Awesome.AwesomeLoginRoute = Ember.Route.extend({
actions:{
facebookLogin: function(){
var router = this;
Awesome.User = Ember.Object.create({
id: "1",
isAuthenticated: "true",
userName: "Serge"
});
router.transitionTo('awesome.index');
}
}
});
不多,但基于该链接,我正在设置一个直接在应用程序中定义的“用户”对象,但我不知道如何将其发送到模板,以便他们使用它来正确呈现自己。
当然,我的想法是在某个时候我将使用一项服务从不同的社交网络获取令牌,但第一步是了解 Ember 的工作原理,为此我试图对对象进行存根。
非常感谢任何指针。
【问题讨论】:
标签: javascript ember.js