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 ES6设置设置,但;“尺寸”;不变_Javascript_Ember.js_Ecmascript 6_Babeljs - Fatal编程技术网

Javascript ES6设置设置,但;“尺寸”;不变

Javascript ES6设置设置,但;“尺寸”;不变,javascript,ember.js,ecmascript-6,babeljs,Javascript,Ember.js,Ecmascript 6,Babeljs,我正在使用ES6新的集合类型/对象,我遇到了一个非常奇怪的问题,当我向集合中添加一个项目时,它会显示为的一部分,但大小不会从零开始移动: 为了提供更多的上下文,以下是最初设置代码的代码: selectedValues: on('init',computed('group.selected', { set: function(param,value) { return typeOf(value) === 'array' ? new Set(value) : new Set([valu

我正在使用ES6新的集合类型/对象,我遇到了一个非常奇怪的问题,当我向集合中添加一个项目时,它会显示为
的一部分,但大小不会从零开始移动:

为了提供更多的上下文,以下是最初设置代码的代码:

selectedValues: on('init',computed('group.selected', {
  set: function(param,value) {
    return typeOf(value) === 'array' ? new Set(value) : new Set([value]);
  },
  get: function() {
    return new Set();
  }
}))
注意:对于那些不熟悉语法的人来说,这是一个余烬计算属性

下面是添加/删除集合元素的代码:

  if(selectedValues.has(elementId)) {
    selectedValues.delete(elementId);
  } else {
    selectedValues.add(elementId);
  }
在执行过程中的任何时候,我都可以从控制台看到该项正在从集合中添加和删除,但是size属性没有受到影响。同时,如果我从浏览器的控制台运行相同的命令集,它确实可以工作


对于那些熟悉的人,我正在通过
ember-cli-Babel
插件使用Babel。我在使用和不使用includePolyfill选项(又名,包括——或不包括——Babel的浏览器polyfill)的情况下都尝试过这个问题。

您的getter总是返回一个
新集合()
——该集合的长度为0。实际上,根据ES6规范,您的setter也是无效的,它应该只有一个参数,你的有两个getter被缓存,所以它只在第一次返回空集。这是余烬计算属性中的标准方法我的setter以什么方式有两个参数?它只有一个:
elementId
,对吗?对余烬不太熟悉,但您是否正在尝试观察计算属性的
大小
的某个地方?Ember已经重写了
size
getter和setter函数,因此大小可能始终是开始时的大小。getter总是返回一个
new Set()
-长度为0。实际上,根据ES6规范,setter也是无效的,它应该只有一个参数,你的有两个getter被缓存,所以它只在第一次返回空集。这是余烬计算属性中的标准方法我的setter以什么方式有两个参数?它只有一个:
elementId
,对吗?对余烬不太熟悉,但您是否正在尝试观察计算属性的
大小
的某个地方?Ember已经覆盖了
size
getter和setter函数,因此大小可能永远都是开始时的大小。