Javascript 激活路线时,未执行余烬模型功能
我有一条余烬之路,我已经把它剥去了Javascript 激活路线时,未执行余烬模型功能,javascript,ember.js,Javascript,Ember.js,我有一条余烬之路,我已经把它剥去了 App.MyRoute = Ember.Route.extend({ model: function(params){ console.log("model function executing"); Ember.Object.create() }, setupController: function(controller){ console.log("setupController fu
App.MyRoute = Ember.Route.extend({
model: function(params){
console.log("model function executing");
Ember.Object.create()
},
setupController: function(controller){
console.log("setupController function executed");
}
});
当我切换到MyRoute时,会执行setupController,但填充模型的函数永远不会执行。模型最终只是在{{link myRoute msg}
标记中传递的msg
对象
在切换到该路径时,我需要加载/计算模型的某些部分。为此,我需要能够成功地更新模型,或者需要从setupController函数中访问链接中传递的参数。关于如何最好地实现这一目标的建议
编辑
为了解决这个问题,我创建了一个完整的最小示例来产生这种行为:
我的html是:
<html>
<head>
<title> This is my Page! </title>
<script src="js/libs/jquery-1.8.2.js"></script>
<script src="js/libs/handlebars-1.0.rc.1.js"></script>
<script src="js/libs/ember.js"></script>
<script src="js/app.js"></script>
</head>
<body>
<script type="text/x-handlebars">
{{#linkTo example App.thing}}<p> go </p>{{/linkTo}}
<div>
{{outlet}}
</div>
</script>
<script type="text/x-handlebars" data-template-name="index">
<p> Initial Text </p>
</script>
<script type="text/x-handlebars" data-template-name="example">
<p> After change </p>
</script>
</body>
</html>
单击示例管线的链接时,“in-setupController”会打印,但“in-model function”不会打印 它似乎对我有效,完全没有理由不起作用: 您确定使用的是EMBER 1.0.0-PRE.4,而不是EMBER 1.0.0-PRE.3吗
App.MyRoute = Ember.Route.extend({
model: function(params){
console.log("model function executing");
Ember.Object.create()
},
setupController: function(controller){
console.log("setupController function executed");
}
});
linkTo
在幕后使用transitionTo
。无论何时使用transitionTo
,我们实际上直接提供上下文/模型,因此不会调用路由上的model
方法。在上面的示例中,您有{{{#链接到示例App.thing}
。因为我们已经知道上下文是App.thing
,所以没有理由触发model
方法。当我们不知道模型是什么时,我们只在路线上调用model
。这种情况主要发生在通过URL更改输入时。我正在运行jquery-1.8.2.js handlebar-1.0.rc.1.js和ember-1.0.0-pre.4.jsI已经有了一个完整的功能应用程序,现在可以显示这种行为了。谢谢,这或多或少是有意义的。回顾文档,我发现我还可以将setupController定义为函数(controller,model),它将解决我的其他用例。这是否有点像是说,如果你知道网页的URL,你就不需要麻烦加载它,因为你必须已经知道那里有什么内容?知道一个url意味着你知道一些关于整个页面“模型”的信息,可能(通常)还有更多的信息。
App.MyRoute = Ember.Route.extend({
model: function(params){
console.log("model function executing");
Ember.Object.create()
},
setupController: function(controller){
console.log("setupController function executed");
}
});