【发布时间】:2017-06-07 01:34:45
【问题描述】:
我正在尝试使用 ember-light-table,但在更新我的对象数组时遇到了一些麻烦。
当我使用updateList() 操作时,我可以看到两个数组都在发生变化(向列表添加/删除对象),但不会触发计算属性tableModel!
我认为pushObjects() 可以解决问题,但由于某种原因它没有通知(它正在添加)。我还尝试使用Ember.A() 初始化 select_people,尽管[] 应该已经是一个 ember 数组...
我的混音:
// table-testing
import Ember from 'ember';
import Table from 'ember-light-table';
export default Ember.Mixin.create({
table: null,
tableColumns: null,
tableModel: null,
init() {
this._super(...arguments);
let table = new Table(this.get('tableColumns'), this.get('tableModel'), { enableSync: this.get('enableSync') });
this.set('table', table);
}
});
我的控制器
import Ember from 'ember';
import TableTesting from '../mixins/table-testing';
const { computed } = Ember;
export default Ember.Controller.extend(TableTesting, {
tableColumns: computed(function() {
return [{
label: 'First Name',
valuePath: 'firstName',
width: '50%',
sortable: false,
}, {
label: 'Last Name'
valuePath: 'lastName',
width: '50%'
}]
}),
tableModel: computed('selected_people.@each.firstName', function() {
// THIS MESSAGE ONLY SHOW WHEN VIEW IS RENDERED
// I've tried .[], .@each, .length... none of them worked and I believe @each.firstName would be the most appropriated from what I've read
console.log('computed method not showing',this.get('selected_people'));
return this.get('selected_people');
}),
init() {
this._super(...arguments);
this.set('selected_people',[]);
},
actions: {
updateList(item, moveToList) {
let removeFromList, fromList, toList;
if (moveToList === 'people') {
removeFromList = 'selected_people'
} else if (moveToList === "selected_people") {
removeFromList = 'people';
}
// get the object lists
fromList = this.get(removeFromList);
toList = this.get(moveToList);
// update list ---> HERE I UPDATE USING KOVL METHOD
toList.pushObjects(item);
fromList.removeObjects(item);
console.log('update!',this.get('selected_people'));
}
}
【问题讨论】:
-
您的代码对我来说很完美。如果您可以在 twiddle 中重现它,它将帮助我们了解正在发生的事情。只需确保在调用
updateList函数后模板应该访问/需要tableModel。您可能会在if块内访问tableModel属性,这可能是错误的,或者不呈现特定块意味着它不会执行计算的属性。 -
不应该是
pushObject和removeObject,单数吗? -
@kumkanillam,我会尝试在旋转中重现。我不在其他任何地方使用 tableModel。我使用在使用 this.get('tableModel') 的 mixin 中创建的对象表...也许这就是问题所在!
-
@locks,这些方法存在。您使用对象数组而不是一个对象您可以检查 API here
-
我在我的模板上对 modelTable 进行了一次迭代,但它没有帮助......我会看看我是否可以在 twiddle 上做点什么
标签: javascript ember.js