【问题标题】:Storing initial model property value in Ember.js在 Ember.js 中存储初始模型属性值
【发布时间】:2016-07-20 17:53:12
【问题描述】:

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

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

【问题讨论】:

    标签: javascript ember.js


    【解决方案1】:

    在你的控制器的路由中,你可以设置你的控制器,让你的控制器保存初始值:

    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')
      })
    })
    

    【讨论】:

    • 你也可以使用model.get('hasDirtyAttributes')
    猜你喜欢
    • 2013-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多