【问题标题】:computed property not displaying correctly in EmberJS, showing [object Object]计算属性在 EmberJS 中未正确显示,显示 [object Object]
【发布时间】:2012-08-19 18:45:33
【问题描述】:

如果我按照文档在 coffeescript 中有一个 ember 对象

Person = Ember.Object.extend
  name: null
  lastName: null
  fullName: Ember.computed ->
    return 'hello'
  .property('name', 'lastName')

person = Person.create
  name: 'Tom'
  lastName: 'Tim'

使用 person.get('fullName') 返回一个 ember 对象而不是全名

m =>
    _cacheable: true
    _dependentKeys: Array[1]
    0: "ownerships"
    length: 1
    __proto__: Array[0]
    func: function () {
    __proto__: Ember.Descriptor

因此(我假设),我看到 [object Object] 而不是全名

<script type="text/x-handlebars" data-template-name="personView">
{{#with App.peopleController.person}}
  <dt>First name</dt>
  <dd>{{name}}</dd>
  <dt>Fullname</dt>
  <dd>{{fullName}}</dd>
{{/with}}
</script>

这呈现:

First name
[object Object]

【问题讨论】:

  • 你能提供一个jsfiddle吗?不知道towerjs,不过好像@get('ownerships').where(hours: "&gt;": 0).count()return 一个对象(可能是关系对象)
  • 我认为提供小提琴很难,但我认为它与咖啡脚本有关,你可能是对的,我会检查!
  • 看起来并不那么容易,即使我删除了那行并说return "hello"之类的东西,它仍然显示为一个对象。我更新了帖子

标签: ember.js towerjs


【解决方案1】:

指点coffeescript给了我一个提示:尝试像这样定义fullName:

fullName: (->
   return "hello"
).property('firstName', 'lastName')

我认为在您的示例中,返回的值是函数本身,而不是值。

编辑

我试图用 javascript 翻译你的代码:http://tinyurl.com/9mh2eho

然后,粘贴到 jsfiddle 中:

http://jsfiddle.net/Sly7/ksRkd/

两个版本似乎都可以工作......也许错误出在其他地方。

【讨论】:

  • 我会说它也可能返回函数本身,因为当我执行 fullName: 'hello' 而不是函数时,它会正确返回正确的东西,也许它与模型的上下文有关,我怀疑我得去塔里问问
  • 是的,也许通过我给的链接,你可以把你的代码翻译成js,然后创建一个js fiddle。
  • 我会试一试,但我开始认为这与 Tower 如何使用 getter 和 setter 有关。感谢您的帮助!
  • 原来这只是语法问题。 Tower 的模型不直接继承 Ember 的对象,而只是将其用作代理,因此我必须以与定义属性“名称”相同的方式定义函数 fullName。感谢您的帮助!
  • 好的,我认为您可以发布您的解决方案作为答案,并接受它。它可能对其他人有用:)
猜你喜欢
  • 2013-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-17
  • 2023-02-23
  • 2018-05-16
  • 2019-12-02
  • 1970-01-01
相关资源
最近更新 更多