总Noob问题在这里。我为简单而道歉,我在这里浏览了数百个Ember标记的帖子,寻找答案。但是对于任何人来说,它似乎太过于原始,以至于不得不烦恼......
我是从头开始和Ember一起开始的。我做了Andy Matthews的EmberTweets教程,该教程运行良好。我正在尝试使用它作为我的第一个Ember应用程序的基础,这非常简单;但我坚持最基本的步骤。我似乎有一个正常运行的控制器,我似乎成功地添加了新的对象。但我无法为我的生活获取我的视图来渲染这些对象的属性。基本视图呈现出来,但不是来自控制器的数据,我只是想用简单的#each
来访问它。我在任何浏览器控制台中都无错误。
小提琴是here。
我尝试在我的示例中以三种不同的方式向控制器添加对象,看看是否有帮助。我可以通过检查内容数组,或者像FilterMenus.MenusController.content.objectAt(2).get('menu_name')这样,从控制台成功访问对象的属性。显然,数据是正确的。
但是当我尝试渲染任何属性时,我的模板中仍然没有显示任何内容,例如:{{menu_name}}
。我做错了什么,拜托?
答案 0 :(得分:6)
如其他答案所述,您必须将您的应用声明为全局变量(省略var
)。
除此之外,您没有在this._super()
的{{1}}方法中调用FilterMenus.menusController
。这是正确设置init
所必需的,因此修改Ember.ArrayController
将起作用。
除了这两个问题,您的代码看起来还不错。这是一个工作小提琴:http://jsfiddle.net/pangratz666/HPkHt/。
答案 1 :(得分:2)
似乎Ember对您的代码的一个大问题是您的Application
被定义为var
,因此无法从模板访问它。删除var
关键字有帮助。
出于某种原因,这还不够,我不得不添加一个
this.set('content', []);
作为init函数的第一行,让它工作。我以前从来没有这样做过,所以我不确定是不是这样做了。如果有人对此有所了解,我会热衷于听到它。
答案 2 :(得分:1)
尝试以下方法:
从FilterMenus声明中删除“var”:
FilterMenus = Em.Application.create();
将menusController.addMenu
的实施更改为:
addMenu: function(menu) {
this.content.push(menu);
},
这让我在“选择国家”和解释性段落之后显示了两个菜单名称:
countries
countries2
Ember似乎不知道this.pushObject(menu);
是什么。但是,直接推送到控制器的内容数组将始终有效。