javascript - Ember.js 如何拦截和过滤传递给 Ember.Object.create(params) 的参数

标签 javascript ember.js

App.Person = Ember.Object.extend({
  firstName: "Trek",
});

App.person = App.Person.create({
  firstName: undefined
})

console.log(App.person.get('firstName')); 

此代码将输出未定义,但我想以某种方式拦截属性的设置,如果它设置为未定义,则保留默认值“Trek” “不变。

ember-1.0.0

最佳答案

您可以使用计算属性:

App.Person = Ember.Object.extend({
  _firstName: 'Trek',
  firstName: function(key, value) {
    if (arguments.length > 1 && typeof value !== 'undefined') {
      this.set('_firstName', value);
    }

    return this.get('_firstName');
  }.property('_firstName')
});

App.person = App.Person.create({
  firstName: undefined
})

console.log(App.person.get('firstName')); 

关于javascript - Ember.js 如何拦截和过滤传递给 Ember.Object.create(params) 的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19520480/

相关文章:

ember.js - ember-data 中的多态关系

javascript - 如何在 javascript 的 FormData 中追加对象?

javascript - Express JS 中的 Jade 不是渲染

javascript - Blade 和 JavaScript - 如何从属性内的字符串中删除空格

ember.js - Glimmer.js 如何在不使用构造函数的情况下将跟踪属性重置为初始值

node.js - 为什么在 `./node_modules/googleapis` 中我看到的是 `build/src` 文件夹而不是 `src` 文件夹

javascript - 如何使用它所在的 div 调整固定的 div/nav 大小?

javascript - JS : trying to make a repeating function that grows and shrinks an image

javascript - Ember.js 将数据存储中的两个对象合并为一个字符串

php - Slim Framework 和 Ember.js 中的 Access-Control-Origin