Knockout.js 为什么Simple Knockout js在桌面上不起作用而在小提琴上起作用 //类来表示座位预订网格中的一行 功能SeatServation(论文){ var self=这个; //self.name=名称; self.papers=ko.可观察(纸张); } //此屏幕的整体视图模型以及初始状态 函数ReservationsViewModel(){ var self=这个; //不可编辑的目录数据-将来自服务器 自可用邮件=[ {标题:“HCI中的道德规范”, 作者:“Rolf”, 摘要:“用户” }, {标题:“HCI”,作者:“Lynnl”}, {标题:“Eth”,作者:“Rolson”} ]; //可编辑数据 self.seats=ko.array([ 新SeatServation(自可用邮件[0]), 新的SeatServation(自助服务[1]) ]); } 应用绑定(新的ReservationsViewModel());
Knockout.js 为什么Simple Knockout js在桌面上不起作用而在小提琴上起作用 //类来表示座位预订网格中的一行 功能SeatServation(论文){ var self=这个; //self.name=名称; self.papers=ko.可观察(纸张); } //此屏幕的整体视图模型以及初始状态 函数ReservationsViewModel(){ var self=这个; //不可编辑的目录数据-将来自服务器 自可用邮件=[ {标题:“HCI中的道德规范”, 作者:“Rolf”, 摘要:“用户” }, {标题:“HCI”,作者:“Lynnl”}, {标题:“Eth”,作者:“Rolson”} ]; //可编辑数据 self.seats=ko.array([ 新SeatServation(自可用邮件[0]), 新的SeatServation(自助服务[1]) ]); } 应用绑定(新的ReservationsViewModel());,knockout.js,Knockout.js,这是我使用敲除示例代码创建的代码。但是firbug没有任何错误。什么也没发生。但当我试着用他们的小提琴时,效果很好 这可能是因为ko.applyBindings(newreservationsviewmodel())在DOM呈现之前执行。让它: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <
这是我使用敲除示例代码创建的代码。但是firbug没有任何错误。什么也没发生。但当我试着用他们的小提琴时,效果很好 这可能是因为
ko.applyBindings(newreservationsviewmodel())代码>在DOM呈现之前执行。让它:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<script src="jquery.js"/>
<script src="knockoutdebug.js"/>
<script type='text/javascript'>
// Class to represent a row in the seat reservations grid
function SeatReservation(papers) {
var self = this;
//self.name = name;
self.papers = ko.observable(papers);
}
// Overall viewmodel for this screen, along with initial state
function ReservationsViewModel() {
var self = this;
// Non-editable catalog data - would come from the server
self.availableMeals = [
{ title: "Ethics in HCI",
authors: "Rolf" ,
abstract:"Users ."
},
{ title: "HCI", authors: "Lynnl" },
{ title: "Eth", authors: "Rolson" }
];
// Editable data
self.seats = ko.observableArray([
new SeatReservation( self.availableMeals[0]),
new SeatReservation(self.availableMeals[1])
]);
}
ko.applyBindings(new ReservationsViewModel());
</script>
</head>
<body>
<p>
<input type="search" id="skyquery" name="q" placeholder="scientific search" autofocus />
<input type="submit" id="skysubmit" value="Ignite!" />
</p>
<table>
<tbody data-bind="foreach: seats">
<tr data-bind="text: papers().title"/>
<tr data-bind="text: papers().authors"/>
<tr data-bind="text: papers().abstract"/>
</tbody>
<tbody></tbody>
</table>
</body>
</html>
创建DOM元素(具有数据绑定
属性)后,需要调用ko.applyBindings
要解决此问题,您可以将脚本
标记移动到页面底部,或将其包装在$(document.ready()
中
也许它在JSFIDLE中工作的原因是它被设置为运行JavaScript onDOMReady
$(document).ready(function() {
ko.applyBindings(new ReservationsViewModel());
});