在Ember.js中存储初始模型属性值

时间:2016-07-20 17:53:12

标签: javascript ember.js

可能是一个简单的答案,但作为一个初学者,比如说我想在我的控制器中存储我的ember模型中的属性,然后我可以与新数据进行比较,我该怎么做呢?

为了提供更多上下文,我有一个输入字段,其中使用model.user_input检索值,我希望能够在首次加载视图时将其存储在某处,然后在值更改时进行比较。我已尝试使用计算属性,但在模型更改时它们也会更新。

1 个答案:

答案 0 :(得分:0)

在您的控制器路线中,您可以设置控制器,使控制器保存初始值:

import Ember from 'ember'

export default Ember.Route.extend({
  model() {
    return {
      'user_input': /* ... */
    }
  },

  setupController(controller, model) {
    this._super(...arguments)
    controller.set('original_input', Ember.get(model, 'user_input'))
  }
})

这样,当值发生变化时,您只需通过控制器上的Ember.get(this, 'original_input')获取原始值:

import Ember from 'ember'

export default Ember.Controller.extend({
  'original_input': '',

  isChanged: Ember.computed('model.user_input', function() {
    return Ember.get(this, 'original_input') !== Ember.get(this, 'model.user_input')
  })
})