gpt4 book ai didi

ember.js - Ember 可观测 map

转载 作者:行者123 更新时间:2023-12-02 03:32:49 27 4
gpt4 key购买 nike

这应该很容易,但我想不通。我正在创建一个行为有点像三态多选的 View ,核心组件是 View 上的一个属性,它列出了每个选项及其状态:

TriState = Ember.View.extend({
...
childView: TristateItem,
selectionStates: {}
});

TristateItem = Ember.View.extend({
...
selectedState: function() {
var value = this.get('value');
var states = this.get('parentView.selectionStates');
var state = states[value];
if (Ember.isNone(state))
return 0;
return state;
}.property('value', 'parentView.selectionStates'),

click: function(event) {
var states = this.get('parentView.selectionStates');
var value = this.get('value');
var newState = states[value];
if (Ember.isNone(newState) || newState == 0)
newState = 1;
else if (newState == 1)
newState = -1;
else
newState = 0;
states[value] = newState;
event.stopPropagation();
}

所以在几次点击之后,selectionStates 的值可能是

{0: 1,   // value "0" is selected with state "1"
3: -1, // value "3" is selected with state "-1"
4: 0} // value "4" is not selected

这很好用,但是 TristateItem.selectedState 的值没有改变。我认为这是因为不可能观察到 javascript 对象,但我在 Ember 中找不到任何可观察到的等效对象。我该怎么做?

最佳答案

由于您正在设置属性,您可以只使用 notifyPropertyChange 通知其他计算属性父对象以某种方式变脏。

this.notifyPropertyChange('parentView.selectionStates');

http://emberjs.jsbin.com/tokese/1/edit

关于ember.js - Ember 可观测 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25660072/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com