Javascript Knockoutjs专注于一个模态
我不知道我做错了什么,但我的hasFocus绑定在模态上不起作用。我看了@jasper tey发布的这篇文章,但当我把它从一个框架中拉出来,作为一个独立的HTML页面编写时,它就不起作用了 我调试了setFocus函数,并确认正在模型中设置isfocus值。绑定似乎是正确的,解析器并没有对我大喊大叫。然而,在我的代码中,模态并没有得到关注,但在JSFIDLE示例中,它似乎工作得很好。任何关于我所缺少的东西的建议都将不胜感激 这是我的密码:Javascript Knockoutjs专注于一个模态,javascript,jquery,knockout.js,modal-dialog,Javascript,Jquery,Knockout.js,Modal Dialog,我不知道我做错了什么,但我的hasFocus绑定在模态上不起作用。我看了@jasper tey发布的这篇文章,但当我把它从一个框架中拉出来,作为一个独立的HTML页面编写时,它就不起作用了 我调试了setFocus函数,并确认正在模型中设置isfocus值。绑定似乎是正确的,解析器并没有对我大喊大叫。然而,在我的代码中,模态并没有得到关注,但在JSFIDLE示例中,它似乎工作得很好。任何关于我所缺少的东西的建议都将不胜感激 这是我的密码: <!DOCTYPE html> <ht
<!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>
在模块化淘汰模板中输入焦点
.集装箱{
填充:10px;
}
引导模式中的输入焦点
发射模态
&时代;
接近
聚焦
名称
类型
$(窗口)。加载(函数(){
函数main模型(){
var self=这个;
self.name=ko.observable(“聚焦时的蓝色边框”);
self.type=ko.observable();
self.header=ko.observable(“这是一个模态”);
self.body=ko.observable('bodyTemplateA');
self.isFocused=ko.可观察(假);
self.setFocus=函数(){
数据。isFocused(true);
}
}
var数据=新的mainModel();
ko.应用绑定(数据);
$('#myModal').on('show.bs.modal',function(){
数据。isFocused(true);
});
});
我已经更改了代码并更新了knockoutjs导入,从2.2.1版升级到3.1.0版,效果良好
我更改的代码:
var data = {
// var self = this;
name: ko.observable(),
type: ko.observable(),
header: ko.observable("This is a modal"),
body: ko.observable('bodyTemplateA'),
isFocused: ko.observable(false),
setFocus: function() {
data.isFocused(true);
},
}
ko.applyBindings(data);
$('#myModal').on('shown.bs.modal', function(){
data.isFocused(true);
});
尽管我认为图书馆版本是引起麻烦的版本 我已经更改了代码并更新了knockoutjs导入,从2.2.1版升级到3.1.0版,效果良好 我更改的代码:
var data = {
// var self = this;
name: ko.observable(),
type: ko.observable(),
header: ko.observable("This is a modal"),
body: ko.observable('bodyTemplateA'),
isFocused: ko.observable(false),
setFocus: function() {
data.isFocused(true);
},
}
ko.applyBindings(data);
$('#myModal').on('shown.bs.modal', function(){
data.isFocused(true);
});
尽管我认为图书馆版本是引起麻烦的版本 谢谢。是的,我可以使用jquery选择器在第一个文本框上设置焦点,但我试图使用knockoutjs数据绑定来实现这一点,我想知道为什么它可以在链接的JSFIDLE示例上工作,但不能在我的代码中工作。@bswat我已经更新了答案,尝试不使用jQueryTanks!我没有想到这可能是因为knockoutjs库版本。谢谢。是的,我可以使用jquery选择器在第一个文本框上设置焦点,但我试图使用knockoutjs数据绑定来实现这一点,我想知道为什么它可以在链接的JSFIDLE示例上工作,但不能在我的代码中工作。@bswat我已经更新了答案,尝试不使用jQueryTanks!我没有想到这可能是因为knockoutjs库版本。