Ember js函数打印源代码而不是它的实际值

Ember js function prints source code instead its actual value

我无法理解为什么它不打印实际总和 (=3) 而是打印源代码

组件

import Component from '@ember/component';

export default Component.extend({

  message: function(){
    let sum = 1+2
    return sum
  }
})

模板

{{message}}

这会将源代码打印为字符串!

function () { let sum = 1 + 2; return sum; }

您需要先 运行 函数,然后再将其分配给 message。您可以通过预先定义函数并像这样调用它来做到这一点:

export default Component.extend({

    function a(){
        let sum = 1+2
        return sum
    }

    message: a();
})

或者您可以使用 immediately invoked function express 方法立即调用函数,方法是将函数包装在括号中并在之后立即调用它,如下所示:

export default Component.extend({

  message: (function(){
    let sum = 1+2
    return sum
  })();
})

您要找的是 computed property :

import { computed } from '@ember/object';
import Component from '@ember/component';

export default Component.extend({

  message: computed(function(){
    let sum = 1 + 2;
    return sum
  })
});