我对Sproutcore很新,但我熟悉Handlebars.我已经完成了Todo教程并检查了一些其他样本.
我喜欢它的一切,并希望在Backbone上使用它,但我很难理解如何连接自定义控件.我可以看到一些数据将在绑定中发挥作用,但触发我迷失的事件.
举个例子,如果我有一个链接列表,我想用它来过滤它下面的数据,那我该如何处理这些事件呢?我知道在骨干中你会使用事件和选择器:"click .link"
任何帮助将不胜感激!
我使用twitter-bootstrap创建顶部菜单,它工作正常
.topbar
.topbar-inner
.container-fluid
{{#view Mediawrap.menuView id="menuView"}}
= link_to 'Mediawrap', root_path, {:class=>"brand"}
%ul.nav
%li.menu
= link_to 'Search', "#", {:class=>"menu"}
%ul.menu-dropdown
%li
= link_to "Hide date search", "#"
%li
= link_to "Hide index search", "#"
%li
= link_to "Hide advance search", "#"
%li
= link_to "Clear search", "#"
%li.divider
%li
= link_to 'Save to new folder ...', "#"
%li
= link_to 'Replace a folder', "#"
{{/view}}
Run Code Online (Sandbox Code Playgroud)
直到我尝试将Sproutcore添加到页面.我的下拉列表停止工作了.我认为这是因为"$(document).ready(function()"在Sproutcore生成HTML标记之前调用.
$(document).ready(function() {
alert("bank");
$(".topbar").dropdown();
});
Run Code Online (Sandbox Code Playgroud)
在sproutcore完成生成HTML标记后,如何在document.ready中调用命令
在我的应用中,<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>
Run Code Online (Sandbox Code Playgroud)
视图:
MyApp.TweetInputView = SC.View.extend({
init: function() {
// act like a singleton
MyApp.TweetInputView.instance = this;
return this._super();
},
focus: function() {
...
this.$().focus();
}
});
Run Code Online (Sandbox Code Playgroud)
初始化
// 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();
}
});
Run Code Online (Sandbox Code Playgroud)
我也试过SC.run.schedule('render', …