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());
});