Я не знаю, что я делаю неправильно, но моя привязка hasFocus к модалу не работает.Я посмотрел на этот пример jsfiddle , опубликованный @ jasper-tey, но когда я вытащил его из фрейма и записал как отдельную HTML-страницу, он не сработал.
Я отладил функцию setFocus и подтвердил, что в модели устанавливается значение isFocused.Кажется, что привязка верна, и парсер не кричит на меня.Тем не менее, модал не получает фокуса в моем коде, но, похоже, работает нормально в примере с jsfiddle.Любые указатели на то, что я пропускаю, будут наиболее цениться.
Вот мой код:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Input-focus in a Modalized Knockout Template</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta name="robots" content="noindex, nofollow">
<meta name="googlebot" content="noindex, nofollow">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet">
<script src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.9.0.js"></script>
<script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script>
<script src="http://ajax.aspnetcdn.com/ajax/knockout/knockout-2.2.1.js"></script>
<style id="compiled-css" type="text/css">
.container {
padding: 10px;
}
</style>
</head>
<body>
<div class="container">
<h4>Input-focus in a Bootstrap Modal</h4>
<button class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">Launch modal</button>
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title" id="myModalLabel"></h4>
</div>
<div class="modal-body" data-bind="template: { name: 'bodyTemplateA'}"></div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary" data-bind="click: setFocus">Set Focus</button>
</div>
</div>
</div>
</div>
</div>
<script id="bodyTemplateA" type="text/html">
<div class="form-group">
<label>Name</label>
<input type="text" class="form-control" data-bind="value: name, hasFocus: isFocused" />
</div>
<div class="form-group">
<label>Type</label>
<input type="text" class="form-control" data-bind="value: type" />
</div>
</script>
<script type="text/javascript">
$(window).load(function(){
function mainModel (){
var self = this;
self.name = ko.observable("Blue border when in focus");
self.type = ko.observable();
self.header = ko.observable("This is a modal");
self.body = ko.observable('bodyTemplateA');
self.isFocused = ko.observable(false);
self.setFocus = function() {
data.isFocused(true);
}
}
var data = new mainModel();
ko.applyBindings(data);
$('#myModal').on('shown.bs.modal', function(){
data.isFocused(true);
});
});
</script>
</body>
</html>