Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从单选按钮选择中指定值的最佳方法_Javascript_Ember.js - Fatal编程技术网

Javascript 从单选按钮选择中指定值的最佳方法

Javascript 从单选按钮选择中指定值的最佳方法,javascript,ember.js,Javascript,Ember.js,我用我的用例框架创建了这个小jsbin: 我试图通过各种方式实现的是,能够根据单选按钮列表中的选择分配颜色值。我相信有一个简单的解决办法 解决方案还必须提供一种方法,使列表中已经选择了潜在的现有值。因此,如果已经选择了color,则应在列表中选中所选的一个 当前解决方案 我目前的解决方案可能与此无关,但我会将其发布在这里以供参考 如前所述,我尝试过各种解决方案。目前我在应用程序中使用的解决方案如前所述工作正常,它有缺陷且杂乱无章,这就是我寻找更好解决方案的原因: ColorController

我用我的用例框架创建了这个小jsbin:

我试图通过各种方式实现的是,能够根据单选按钮列表中的选择分配
颜色
值。我相信有一个简单的解决办法

解决方案还必须提供一种方法,使列表中已经选择了潜在的现有值。因此,如果已经选择了
color
,则应在列表中选中所选的一个


当前解决方案

我目前的解决方案可能与此无关,但我会将其发布在这里以供参考

如前所述,我尝试过各种解决方案。目前我在应用程序中使用的解决方案如前所述工作正常,它有缺陷且杂乱无章,这就是我寻找更好解决方案的原因:

ColorController
有一个动作,该动作附加到上述jsbin中的
  • selectColor: function(color) {
      this.send('setColor', color);
      this.forEach(function(item) {
        item.set('isChecked', item.get('model') == color);
      });
    }
    
    IndexController
    具有
    setColor
    操作:

    setColor: function(color) {
      this.set('color', color);
    }
    
    初始选择通过
    颜色控制器上的该观察者设置:

    colorsChanged: function() {
      if (this.filterBy('isChecked', true).get('length') == 0) {
        var selectedColorId = this.parentController.get('model.color_id')+'',
            selectedColor = this.filterBy('id', selectedColorId);
    
        if (selectedColor.get('length') == 0) return;
        selectedColor.objectAt(0).set('isChecked', true);
      }
    }.observes('this.[]')
    

    这看起来太混乱了,但它也不能100%起作用。例如,单击单选按钮本身实际上会再次取消选中单选按钮。

    在余烬中,单选按钮和复选框等内容最好封装在组件中。不幸的是,一些边缘案例阻止了Ember将单选按钮组件作为core的一部分进行装运

    我要做的第一件事是看看是否有其他人已经实现了这一点。你在用什么?如果不是,你应该是。浏览我找到的


    我想试一试。

    谢谢,我还没有优先考虑查看
    ember cli
    。我将查看“余烬”单选按钮,明天回来:-)