在我的应用程序中,该<body>
标签仅包含一个<script type="text/x-handlebars>
包含我所有视图的标签。Sproutcore 2.0 很好地添加了一个 jQuery on-document-ready 处理程序,它解析这些模板并将它们呈现回 DOM。
我想在其中一个视图呈现后立即调用一个函数。问题是重新插入是异步发生的,所以我不知道视图何时可用。
例子
页<body>
<script type="text/x-handlebars">
...
{{view "MyApp.TweetInputView"}}
...
</script>
</body>
看法:
MyApp.TweetInputView = SC.View.extend({
init: function() {
// act like a singleton
MyApp.TweetInputView.instance = this;
return this._super();
},
focus: function() {
...
this.$().focus();
}
});
初始化器
// if the URL is /tweets/new, focus on the tweet input view
$(function() {
if (window.location.pathname === '/tweets/new') {
// doesn't work, because the view hasn't been created yet:
MyApp.TweetInputView.instance.focus();
}
});
我也尝试SC.run.schedule('render', function() { MyApp.TweetInputView.instance.focus(); }, 'call');
过希望 Sproutcore 在所有视图渲染和插入之后运行它,但似乎并非如此。