gpt4 book ai didi

binding - Ember : re-bind a function to a view property (checkbox observing text area)

转载 作者:行者123 更新时间:2023-12-02 06:11:31 24 4
gpt4 key购买 nike

目前在 Ember.js 1.0.0.rc6.4

我有一个新事件的 View ,它呈现一个文本区域( description )和一个复选框( isQuestion )。如果一个 ?在描述中插入复选框会自动选中。在用户单击复选框之前效果很好,此时 binging 会丢失,这很好,但是一旦提交表单,我需要重新分配它。这是一些代码,我希望它是干净的,并感谢您的关注。对不起,如果我洒了一些咖啡。

App.ActivityFormView = Em.View.extend
actionName: 'submit'

reset: ->
@set('description', '')
@set('duration', '')
@set('checkIsQuestion', false)

submit: ->
activities = @get('controller.model')
activities.createRecord(description: @get('description'), isQuestion: @get('checkIsQuestion'))
@reset()

checkIsQuestion: (->
@get('description')? && @get('description').match(/\?/)?
).property('description')

这是模板
<label>
Add your activity here:
{{textarea value=view.description}}
</label>
<label>
Mark as question:
{{input checked=view.checkIsQuestion type='checkbox'}}
</label>
<button type='submit'>Save</button>

我尝试在 reset 中使用绑定(bind)。方法,但我认为我需要在单独的函数中提取匹配逻辑并使用属性或绑定(bind)重新分配它,但我不知道如何。

欢迎任何帮助,请随时对整体解决方案发表评论。谢谢

最佳答案

我想如果绑定(bind)和计算属性保持不变,你应该区分你的计算属性,如果它得到 setget并采取不同的行动,将您的代码修改为:

...
checkIsQuestion: function(key, value) {
// getter
if (arguments.length === 1) {
return (this.get('description') != null) && (this.get('description').match(/\?/) != null);
// setter
} else {
return value;
}
}.property('description')
...

这样做,绑定(bind)应该保持不变。也可以在这里查看示例 jsbin .我希望它具有您正在寻找的正确行为。对不起“javascriptified代码”:)

希望能帮助到你。

关于binding - Ember : re-bind a function to a view property (checkbox observing text area),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18054793/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com