Ember(Computed?)在.set()上运行函数的属性

时间:2015-09-23 21:41:54

标签: ember.js

我的代码如下:

import Ember from 'ember';

export default Ember.mixin.create({
    maxPosition: 100,
    minPosition: 0,
    position: 0,
    updatePosition: function(increment){
        this.set('position', increment);
    }
});

为清晰起见,此代码已超简化,但我想在minPosition上放置maxPositionposition的界限

例如:

如果我跑:this.updatePosition(150);

然后运行this.get('position')

它应该返回100

运行position时,是否可以将this.set()置于将被这些值绑定的计算属性中?

1 个答案:

答案 0 :(得分:2)

我没试过,但documentation说这是可能的。这样的事情应该有效:

import Ember from 'ember';

export default Ember.mixin.create({
    maxPosition: 100,
    minPosition: 0,
    _pos: 0,
    position: Ember.computed('_pos', {
      get: function(key) {
        return this.get('_pos');
      },
      set: function(key, value) {
        var pos = Math.max(Math.min(value, this.get('maxPosition')), this.get('minPosition'));
        this.set('_pos', pos);
        return pos;
      }
    })
});