Javascript Handlebar/Ember.Checkbox-2个绑定复选框,其中一个复选框为false
我正在一个应用程序中制作一个RSVP表单,我试图弄清楚如何让两个复选框相互镜像,当一个选中时,另一个不选中。现在,我的方法是将每个复选框绑定到Javascript Handlebar/Ember.Checkbox-2个绑定复选框,其中一个复选框为false,javascript,checkbox,ember.js,handlebars.js,Javascript,Checkbox,Ember.js,Handlebars.js,我正在一个应用程序中制作一个RSVP表单,我试图弄清楚如何让两个复选框相互镜像,当一个选中时,另一个不选中。现在,我的方法是将每个复选框绑定到isComing属性,并在上选中一个复选框!我正在写,但它不是那样工作的 以下是我尝试过的: HTML: 这不管用。第一个复选框工作正常,但第二个复选框完全不受影响。显然,!不允许isComing 在jQuery中这样做很简单,我考虑过创建一个computed属性,第二个复选框绑定到该属性,并侦听isComing,但它们看起来不像正确的方法 有没有一个更简
isComing
属性,并在上选中一个复选框!我正在写
,但它不是那样工作的
以下是我尝试过的:
HTML:
这不管用。第一个复选框工作正常,但第二个复选框完全不受影响。显然,!不允许isComing
在jQuery中这样做很简单,我考虑过创建一个computed属性,第二个复选框绑定到该属性,并侦听isComing
,但它们看起来不像正确的方法
有没有一个更简单的方法来做到这一点与车把或余烬 我认为最好的方法是通过computedProperty。我用叉子叉了你的jsfiddle来展示它是如何工作的。您可以这样编写控制器:
App.ApplicationController = Ember.ObjectController.extend({
isComing: false,
isntComing: function(key, value) {
if (arguments.length == 2) {
this.set('isComing', !value);
}
return !(this.get('isComing'));
}.property('isComing')
});
我能想到的最好的方法是通过computedProperty。我用叉子叉了你的jsfiddle来展示它是如何工作的。您可以这样编写控制器:
App.ApplicationController = Ember.ObjectController.extend({
isComing: false,
isntComing: function(key, value) {
if (arguments.length == 2) {
this.set('isComing', !value);
}
return !(this.get('isComing'));
}.property('isComing')
});
车把上没有“非”操纵器这样的东西。您需要将第二个复选框的状态绑定到其他一些属性。可以这样做: 模板 JS
车把上没有“非”操纵器这样的东西。您需要将第二个复选框的状态绑定到其他一些属性。可以这样做: 模板 JS
如果您可以使用单选按钮,那么我将使用这家伙的实现(),简单而干净
App.RadioButton = Ember.View.extend({
tagName : "input",
type : "radio",
attributeBindings : [ "name", "type", "value", "checked:checked:" ],
click : function() {
this.set("selection", this.$().val())
},
checked : function() {
return this.get("value") == this.get("selection");
}.property()
});
话虽如此,如果你不介意提前检查一个,亚当的答案也一样好。如果你可以使用单选按钮,那么我会使用这家伙的实现(),简单明了
App.RadioButton = Ember.View.extend({
tagName : "input",
type : "radio",
attributeBindings : [ "name", "type", "value", "checked:checked:" ],
click : function() {
this.set("selection", this.$().val())
},
checked : function() {
return this.get("value") == this.get("selection");
}.property()
});
话虽如此,如果你不介意提前检查一个,亚当的答案也一样好。你是故意不使用单选按钮吗?只是好奇不,单选按钮就可以了。我没有使用它,因为它没有余烬版本,但我想写我自己的观点不会太难。你是故意不使用单选按钮吗?只是好奇不,单选按钮就可以了。我没有使用它,因为它没有余烬版本,但我想写我自己的视图不会太难。Petr计算不是双向绑定,更改isNotComing不会禁用isComing@kingpin2k你说得对。谢谢你指出这一点。对不起,我有点误解了这个问题。对于所描述的复选框行为,我同意Adam发布的答案。Petr计算不是双向绑定,更改isNotComing不会禁用isComing@kingpin2k你说得对。谢谢你指出这一点。对不起,我有点误解了这个问题。对于所描述的复选框行为,我同意Adam发布的答案。谢谢!您使用-1作为初始
isComing
值,这与使用null
相同?是的,我有使用-1的旧习惯,有时会通过QA。我又遇到了一个问题。我的isComing是模型中的一个属性,因为我想保存它。一切都很好,除了在POST请求中没有发送isComing。有没有想过为什么它在模型中并且看起来工作正常,但是没有被发送到服务器?谢谢!您使用-1作为初始isComing
值,这与使用null
相同?是的,我有使用-1的旧习惯,有时会通过QA。我又遇到了一个问题。我的isComing是模型中的一个属性,因为我想保存它。一切都很好,除了在POST请求中没有发送isComing。有没有想过为什么它在模型中并且看起来工作正常,但是没有被发送到服务器?谢谢!这非常有效,我没有意识到这些值被传递到了函数中。谢谢!这非常有效,我没有意识到这些值被传递到了函数中。
App.ApplicationController = Ember.ObjectController.extend({
isComing: false,
isNotComing: Em.computed.not('isComing')
});
App.RadioButton = Ember.View.extend({
tagName : "input",
type : "radio",
attributeBindings : [ "name", "type", "value", "checked:checked:" ],
click : function() {
this.set("selection", this.$().val())
},
checked : function() {
return this.get("value") == this.get("selection");
}.property()
});