不能确定这是否是去了解它的最佳方式,但我玩了,得到它的工作是这样的:
Full Source | Run
的JavaScript:
App.DashboardView = Em.View.extend({
starActive: true,
userActive: false,
heartActive: false,
resetDisplay: function() {
this.set('starActive', false);
this.set('userActive', false);
this.set('heartActive', false);
},
star: function() {
console.log('star');
this.resetDisplay();
this.set('starActive', true);
},
user: function() {
console.log('user');
this.resetDisplay();
this.set('userActive', true);
},
heart: function() {
console.log('heart');
this.resetDisplay();
this.set('heartActive', true);
}
});
把手:
<script type="text/x-handlebars" data-template-name="_navDashboard">
<ul class="nav-list">
<li class="nav-header">Actions</li>
<li>
<a {{action star target="view"}}><i class="icon-star"></i> One</a>
</li>
<li>
<a {{action user target="view"}}><i class="icon-user"></i> Two</a>
</li>
<li>
<a {{action heart target="view"}}><i class="icon-heart"></i> Three</a>
</li>
</ul>
</script>
<script type="text/x-handlebars" data-template-name="dashboard/user">
<h3>User</h3>
</script>
<script type="text/x-handlebars" data-template-name="dashboard/star">
<h3>Star</h3>
</script>
<script type="text/x-handlebars" data-template-name="dashboard/heart">
<h3>Heart</h3>
</script>
<script type="text/x-handlebars" data-template-name="dashboard">
<div class="row-fluid">
<h2>Dashboard</h2>
</div>
<div class="row-fluid">
<div class="span3">
<div class="well sidebar-nav">
{{partial navDashboard}}
</div>
</div>
<div class="span7">
{{#if view.starActive}}
{{render "dashboard/star"}}
{{/if}}
{{#if view.userActive}}
{{render "dashboard/user"}}
{{/if}}
{{#if view.heartActive}}
{{render "dashboard/heart"}}
{{/if}}
</div>
</div>
</script>
我不知道这个解决方案,因为它使负责管理时呈现不特定的开发者模板或视图;这取决于复杂性,因此更容易犯错,并在当时留下多个视图显示,甚至显示错误的视图,但这正是我目前所掌握的。
我认为这可能是要走的路。我的使用案例有点复杂,但我会尝试走这条路...... – 2013-03-10 20:32:48
btw:你为什么要设置视图的动作目标?处理控制器中的事件不是更自然吗? – 2013-03-10 20:33:42
对不起,延迟回复。这真的取决于。我发现自己最近在路由中处理事件,所以我的控制器具有的操作几乎都是'this.get('target')。send('eventName',this.get('content'));'only和我在路线上处理它。就像我说的,取决于你在做什么或试图做什么。只要确保你在任何一种方法上都一致。 – MilkyWayJoe 2013-03-30 15:03:53