1

总菜鸟问题在这里。我为简单而道歉,我在这里浏览了数百个带有 Ember 标记的帖子以寻找答案。但这似乎太原始了,任何人都懒得问……

我从头开始使用 Ember。我做了 Andy Matthews 的 EmberTweets 教程,效果很好。我正在尝试将其用作我的第一个 Ember 应用程序的基础,这非常简单;但我坚持最基本的步骤。我似乎有一个正常工作的控制器,并且似乎成功地向它添加了新对象。但我终其一生都无法得到我的观点来渲染这些对象的属性。基本视图呈现出来,但不是来自控制器的数据,我只是想用一个简单的#each. 我在任何浏览器控制台中都没有错误。

小提琴在这里

在我的示例中,我尝试以三种不同的方式将对象添加到控制器,看看是否有帮助。我可以通过检查内容数组或使用类似 FilterMenus.MenusController.content.objectAt(2).get('menu_name') 的方式从控制台成功访问对象的属性。显然,数据是正确的。

但是当我尝试渲染任何属性时,我的模板中仍然没有出现任何内容,例如:{{menu_name}}. 请问我做错了什么?

4

3 回答 3

6

如其他答案所述,您必须将您的应用程序声明为全局变量(通过省略var)。

除此之外,你没有this._super()在你FilterMenus.menusControllerinit方法内部调用。这是Ember.ArrayController正确设置所必需的,因此修改content将起作用。

除了这两个问题,您的代码看起来还不错。这是一个工作小提琴:http: //jsfiddle.net/pangratz666/HPkHt/

于 2012-07-17T04:34:26.673 回答
2

似乎 Ember 对您的代码的最大问题是您的代码Application被定义为,var因此无法从模板访问它。删除var关键字有帮助。

但出于某种原因,这还不够,我不得不添加一个

this.set('content', []);

作为你的 init 函数的第一行让它工作。我以前从来没有这样做过,所以我不确定 jsFiddle 是否在做某事。如果有人对此有所了解,我很想听听。

于 2012-07-17T02:07:44.607 回答
1

尝试以下操作:

  1. 从 FilterMenus 声明中删除“var”:

    FilterMenus = Em.Application.create();
    
  2. 将实现更改menusController.addMenu为:

    addMenu: function(menu) {
        this.content.push(menu);
    },
    

这让我在“选择国家”和解释性段落之后出现了两个菜单名称:

countries
countries2

Ember 似乎不知道是什么this.pushObject(menu);。不过,直接推送到控制器的内容数组将始终有效。

于 2012-07-17T03:14:14.740 回答