我正在尝试使用绑定复选框(true
)在false
和photoApproved
值之间切换,但在我的控制器代码中没有运气。
这是photos_controller.js
:
App.PhotosController = Ember.ArrayController.extend(
photoApproved: ((key, value) ->
model = @get("model")
if value is 'undefined'
model.get "approved"
else
model.set "approved", value
model.save()
value
).property("model.approved")
)
以下是template
文件photos.hbs
:
<h1>Photos</h1>
<ul>
{{#each controller}}
<li class="masonry-brick">
<h3>Approved: {{approved}}</h3>
{{input type="checkbox" checked=photoApproved class="toggle"}}
{{#link-to "photo" this}}{{name}}{{/link-to}}
<img {{bind-attr src=image_url}} alt="Logo">
</li>
{{else}}
<li>There are no photos.</li>
{{/each}}
</ul>
{{outlet}}
最后,这是model
:
App.Photo = DS.Model.extend(
name: DS.attr("string")
description: DS.attr("string")
image_url: DS.attr("string")
approved: DS.attr("boolean")
)
如何更改我的photoApproved功能以使其正常工作?
答案 0 :(得分:3)
我注意到两件事:
photoApproved
是集合的属性,而不是单个模型的属性。
您应该为PhotosController
定义itemController并在其中定义photoApproved
:
App.PhotosController = Ember.ArrayController.extend(
itemController: 'photo'
)
App.PhotoController = Ember.ObjectController.extend(
photoApproved: ((key, value) ->
model = @get("model")
if value is 'undefined'
model.get "approved"
else
model.set "approved", value
model.save()
value
).property("model.approved")
)
接下来,我不明白为什么你需要定义photoApproved
。当您在复选框上使用approved
作为选中值时,它已经绑定到模型。
然后,您可以定义一个观察者来保存模型(但我不确定以下控制器代码是否正确)。
<li class="masonry-brick">
<h3>Approved: {{approved}}</h3>
{{input type="checkbox" checked=approved class="toggle"}}
{{#link-to "photo" this}}{{name}}{{/link-to}}
<img {{bind-attr src=image_url}} alt="Logo">
</li>
App.PhotoController = Ember.ObjectController.extend(
approvePhoto: (->
@get('model').save() unless @get('approved')
).observes("approved")
)
答案 1 :(得分:3)
Ember 2.4回答:
<input type="checkbox"
checked="{{if info.show_in_email 'checked'}}"
onclick={{action (mut info.show_in_email)
value="target.checked"}} />
其中info
是一个余烬模型,show_in_email
是一个布尔字段。
答案 2 :(得分:0)
删除unless @get('approved')
功能上的approvePhoto
解决了问题。
# controller
App.PhotoController = Ember.ObjectController.extend(
approvePhoto: ((key, value) ->
@get('model').save()
).observes("model.approved")
)
# template
<li class="masonry-brick">
<h3>Approved: {{approved}}</h3>
{{input type="checkbox" checked=approved class="toggle"}}
{{#link-to "photo" this}}{{name}}{{/link-to}}
<img {{bind-attr src=image_url}} alt="Logo">
</li>