gpt4 book ai didi

javascript - 如何从另一个 Controller (而不是从模板)访问另一个 Controller 的属性

转载 作者:行者123 更新时间:2023-12-04 00:58:38 25 4
gpt4 key购买 nike

我的应用程序有两个 Controller ,LoginController 和 RsvpController。我想加载与当前登录相关的 Rsvps 列表。

我的登录代码似乎有效——但我无法避免以下警告: “弃用:不推荐使用 Controller#controllerFor,请改用 Controller#needs”

我还怀疑我没有按照 ember 的方式做事,所以对于如何改进此代码以使用更多 ember 功能的任何评论,我将不胜感激。

这是 Controller :

App.RsvpController = Ember.ArrayController.extend({
needs: ['login'], // borrows from login controller
content: [],

loadModel : function() {
var theCode = this.controllerFor('login').get('code');
console.log("Loading Model for code " + theCode);

var rsvpArray = App.Rsvp.find({
code : theCode
});
this.set('content', rsvpArray);

rsvpArray.addObserver('isLoaded', function() {
console.log("Loaded rsvpArray" + Em.inspect(this));
});


}.property('controllers.login.code'), // reload model if the user changes login
});

这是 index.html 的一部分:

<script type="text/x-handlebars" id="rsvp">
<p>placeholder for <b>RSVP</b></p>

{{#if controllers.login.name }}
<!-- rsvp code here -->
Logged in with code {{controllers.login.code}}

{{ loadModel }} <!-- call loadModel function to populate model when this is rendered -->

{{#each model}}
<p>givenName {{givenname}}</p>
{{/each}}

{{else}}
<i>Please login first!</i>
{{/if}}

</script>

最佳答案

你几乎在那里,在你的模板中你做的事情是正确的,弃用警告来自对 controllerFor 的调用,你可以避免像这样获取你的登录 Controller this.get( 'controllers.login'),这里修改了你的代码:

App.RsvpController = Ember.ArrayController.extend({
needs: ['login'], // borrows from login controller
content: [],

loadModel : function() {
var theCode = this.get('controllers.login.code'); // here the change
console.log("Loading Model for code " + theCode);

var rsvpArray = App.Rsvp.find({
code : theCode
});
this.set('content', rsvpArray);

rsvpArray.addObserver('isLoaded', function() {
console.log("Loaded rsvpArray" + Em.inspect(this));
});

}.property('controllers.login.code'), // reload model if the user changes login
});

希望对你有帮助

关于javascript - 如何从另一个 Controller (而不是从模板)访问另一个 Controller 的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16847061/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com