我有一个fancybox来管理用户。现在我定义了一个将用户设置为primary的函数。这是模板:
<ul class="user-list">
{{#each inquiry.users as |user|}}
<li>
{{user.email}}
{{#if (isEqual user.id createdBy)}}<span> (primary) </span>
{{else}} <button type="button" class="pretty small btn" {{action 'setPrimary' user}}>Set to Primary</button>
{{/if}}
<div class="pretty small danger btn icon-right entypo icon-cancel" {{action 'removeUser' user}}><a href="#">remove</a></div>
</li>
{{/each}}
</ul>
这是控制器:
createdBy: function() {
return this.get('inquiry.created_by');
}.property('inquiry'),
actions: {
setPrimary: function(user){
var inquiry = this.get('inquiry');
var userId = user.get('id');
inquiry.set('created_by', userId);
inquiry.save();
$.fancybox.update();
}
}
你看到isEqual助手中的createdBy是一个计算属性。如果用户的id等于查询创建的人的id,则该用户是主要用户。或者,您可以将用户设置为主要用户,从而触发将created_by
查询设置为当前用户ID的操作。我使用$.fancybox.update()
重新呈现内容,但是当我点击Set as Primary
按钮时没有任何更改。有人能告诉我哪一部分是错的吗?我应该使用观察者而不是createdBy
属性的计算属性吗?