我有这个:
is: 'paper-filter',
properties:{
filters:{
computed: 'getFilters(data,byArray,obj_filters)'
},
并且在obj_filters
更新时不会更新
仍然没有用参数更新!= undefined
这是一个演示问题的视频
https://drive.google.com/open?id=0B2sFtTur-E_CSVBKbVdlRzZzTkE
和jsfiddle
答案 0 :(得分:1)
如果我只是更新obj_filter
:
var new_obj_filters = this._setFilter(title, index, by, max, this.obj_filters);
this.obj_filters = new_obj_filters; // no 'computed properties' are fired.
如果我克隆了对象,那就很好了:
var obj_filters = this._setFilter(title, index, by, max, this.obj_filters);
this.obj_filters = clone(obj_filters); // TODO why clone ??? but fixed!
答案 1 :(得分:0)
您需要使用Polymer API对obj_filters
进行更改(请参阅here和here)。
例如,
obj_filters[by][title] = true
应改为
this.set(["obj_filters", by, title], true)
另请查看API description。要查找相关部分,请搜索"设置("。
修改强>
我发现了另外两个导致问题的问题。 首先声明你的计算属性如下(注意*)。
filters:{
computed: 'getFilters(data,byArray,obj_filters.*)'
},
其次,当您第一次致电this.set(["obj_filters",by,title], true);
obj_filters.by
尚未定义时,obj_filters.by.title
无法设置,因为该路径不存在。解决这个问题的一种方法是首先初始化它。
if (!this.obj_filters[by]) {
this.set(["obj_filters",by], {});
}
this.set(["obj_filters",by,title], true);