<div id="main" data-role="view" data-model="viewModel">
Foo: <span data-bind="text: bar"></span>
</div>
Since I specified data-model I would expect 'bar' to be binded, but that's not the case. It doesn't work.
It only comes together when I call kendo.bind('#main', viewModel).
Do I always need to call kendo.bind() for all of my viewModels to work?
6 Answers, 1 is accepted

Is this right?
Yes, kendo.mobile.Application internally calls kendo.bind when the model data attribute is set. If you are not using kendo.mobile.Application you must call kendo.bind. You can find more info about Kendo MVVM in the related documentation: http://docs.kendoui.com/getting-started/framework/mvvm/overview
Kind regards,Atanas Korchev
the Telerik team

I like the idea of having my binds auto-initialized.
Initializing a kendo.mobile.Application does the following:
1. Attached event handlers for various events
2. Adds various CSS classes to page elements
3. Appends meta tags for the viewport configuration
4. Listens for browser history changes
I may suggest creating a helper method which will bind a DOM element to its model data attribute:
function bind(element) {
var modelName = $(element).data("model");
var model = window[modelName];
kendo.bind(element, model);
}
Then you can use it like this:
<div id="view" data-model="myViewModel"></div>
<script>
var myViewModel = kendo.observable({});
bind($("#view"));
</script>
Regards,
Atanas Korchev
the Telerik team

(To be fair I could have put that comment on about half the forum posts)
I am not sure what problem needs fixing in this particular thread. I don't see any bug being discussed here. The requested behavior is just not supported/implemented and a viable solution is suggested.
I recommend opening a new feature request in our feedback portal. If it gathers interest we would consider it for our future plans.
Atanas Korchev
Telerik