Ember.js 使用Ember的正确方法是什么。使用Ember CLI选择

Ember.js 使用Ember的正确方法是什么。使用Ember CLI选择,ember.js,ember-data,ember-cli,ember.select,Ember.js,Ember Data,Ember Cli,Ember.select,我正试图得到余烬。选择工作,我就快到了。我举了一个例子: 要查看我的问题,请单击最近的一些页面,然后单击编辑。select未通过contentBinding=“controllers.modelnames”获取模型。如果您单击modelnames路由并再次编辑一些最近的页面,它将正常工作,因为现在我们获取了modelnames。我或许可以自己从页面控制器中获取模型名,但在我看来,这更像是一种黑客行为 源已打开(它在没有CouchDB的情况下运行) 因此,我的问题是:使用Ember的正确方法是什么

我正试图得到余烬。选择工作,我就快到了。我举了一个例子:

要查看我的问题,请单击最近的一些页面,然后单击编辑。select未通过
contentBinding=“controllers.modelnames”
获取模型。如果您单击modelnames路由并再次编辑一些最近的页面,它将正常工作,因为现在我们获取了modelnames。我或许可以自己从页面控制器中获取模型名,但在我看来,这更像是一种黑客行为

源已打开(它在没有CouchDB的情况下运行)


因此,我的问题是:使用Ember的正确方法是什么。使用Ember CLI进行选择在这里理解Ember工作流非常重要。当您导航到URL时,Ember解析URL并将其映射到您的路由器。此时,Ember知道它需要从作为URL一部分的每个资源/路由获取模型。一旦它获取了所有这些模型,它就会用相关的控制器来装饰它们。这里描述了您的问题所在。仅使用控制器不会导致获取模型。您正在路由器中不是父/祖先的控制器上使用
needs
,因此您不能保证它会被填充。您需要手动获取模型并将其存储在另一个控制器上,或者获取模型并将其存储在当前控制器上,以确保在访问该路线时该模型存在。

了解ember工作流在这里非常重要。当您导航到URL时,Ember解析URL并将其映射到您的路由器。此时,Ember知道它需要从作为URL一部分的每个资源/路由获取模型。一旦它获取了所有这些模型,它就会用相关的控制器来装饰它们。这里描述了您的问题所在。仅使用控制器不会导致获取模型。您正在路由器中不是父/祖先的控制器上使用
needs
,因此您不能保证它会被填充。您需要手动获取模型并将其存储在另一个控制器上,或者获取模型并将其存储在当前控制器上,以确保在访问该路由时该模型存在。

Ember select在任何地方(Ember cli与否)都是一样的,无论它是Ember数据、其他库还是POJO

hbs
{{查看“选择”内容=模型
optionValuePath='content.id'
optionLabelPath='content.name'
selection=selectedModel}

这意味着您的模型有一个id属性和一个name属性。模型将从路由填充,如果它是二级模型,您可以在路由中使用
this.modelFor
,并在路由的
setupController
中的控制器上将其设置为其他属性


Ember select的问题在于性能,它不是一个组件。

Ember select在任何地方都是一样的(Ember cli与否),无论它是Ember数据、其他库还是POJO

hbs
{{查看“选择”内容=模型
optionValuePath='content.id'
optionLabelPath='content.name'
selection=selectedModel}

这意味着您的模型有一个id属性和一个name属性。模型将从路由填充,如果它是二级模型,您可以在路由中使用
this.modelFor
,并在路由的
setupController
中的控制器上将其设置为其他属性


Ember select的问题在于性能,而不是组件。

是的,谢谢。这就是我认为的黑客行为。上的
{{mname.content.name}
,但select不起作用。这是不符合逻辑的。更重要的是,你对需求的期望是不正确的,所以你必须破解它,让它按照你想要的方式工作。您向我展示的是完全不同的东西,ember数据上的异步关系与ember控制器上的需求。余烬和余烬数据是两种不同的产品。另外,您不应该访问内容属性,它应该是
{{mname.name}
刚刚测试过的{{mname.name}},您是正确的。余烬数据是余烬CLI的一个基本部分,因此我的问题可能更清楚,即“使用余烬的正确方法是什么。使用余烬数据选择”。在你的回答中,你提出了两种方法。正确的方法是什么?Ember数据不是Ember cli的基本部分,也不是必需的部分。也就是说,如果您想使用它,您需要在返回所需项目的pages控制器上创建一个computed属性,或者手动连接控制器。我会研究这条线索:我不同意这是一个有效的结论。如果您为其提供一个集合,则“选择”工作得非常好。您在获取收藏时遇到困难并不意味着select不起作用。我想如果你在获取数据方面有问题,你会遇到很多其他问题。是的,谢谢。这就是我认为的黑客行为。上的
{{mname.content.name}
,但select不起作用。这是不符合逻辑的。更重要的是,你对需求的期望是不正确的,所以你必须破解它,让它按照你想要的方式工作。您向我展示的是完全不同的东西,ember数据上的异步关系与ember控制器上的需求。余烬和余烬数据是两种不同的产品。另外,您不应该访问内容属性,它应该是
{{mname.name}
刚刚测试过的{{mname.name}},您是正确的。余烬数据是余烬CLI的一个基本部分,因此我的问题可能更清楚,即“使用余烬的正确方法是什么。使用余烬数据选择”。在你的回答中,你提出了两种方法。正确的方法是什么?Ember数据不是Ember cli的基本部分,也不是必需的部分。也就是说,如果您想使用它,您需要在返回所需项目的pages控制器上创建一个computed属性,或者手动连接控制器。我会研究这条线索:我不同意这是一个有效的解释