我们正在构建一个应用程序,其中一部分涉及从列表中选择一个元素;我们为此使用了一个插座并在两个视图之间切换:一个显示当前选择的元素('detailView')
,另一个显示所有可供选择的元素的列表('listView')
- 它的工作方式类似于下拉列表。表示列表视图中当前选择的元素的列表元素也有一个类,is-selected
即绑定属性。
当我们从列表视图切换到详细视图时(作为用户点击的结果,意味着他选择了一个元素),我们更新一个表示当前选定项目的对象。这会导致列表视图中列表元素上的类属性绑定在 Ember 库中(在EmberHandlebars.bindClasses
函数中)产生错误。
看起来提到的函数正在尝试更新与新值相关的属性绑定,并通过查找相应的 HTML 代码来实现。问题是这个 HTML 目前不存在,因为我们已经切换了视图。
我用我们正在尝试做的一个例子做了一个小提琴:http: //jsfiddle.net/7k8n7/2/
请,如果您在此示例中发现任何您认为不好的设计选择,请毫不犹豫地提及它;然而,Fiddle 的重点只是在我们认为应该可以工作的一段代码中创建错误。
产生错误的代码是:
goToDetail : function(router, event) {
router.transitionTo('detail');
router.get('selectedModel').set('content', event.context);
}
如果在此函数中切换两行的顺序,则detail-view
甚至不会显示。