无法找到我犯错的地方。 我运行代码时收到此错误消息:
(+ i sum) => 1
(+ i sum) => 3
(+ i sum) => 6
(+ i sum) => 10
(+ i sum) => 15
(sum-to 5) => 15
newQuote可能会为quotesArray添加新位置,并导致添加新行。当newQuote没有ajax请求时,它工作正常,因此添加所有相同的对象。阿贾克斯自己也是这样。不知道该怎么办。 我的HTML:
Uncaught ReferenceError: Unable to process binding "text: function (){return quoteAuthor }"
Message: quoteAuthor is not defined
我的JS:
<!DOCTYPE html>
<html lang="en">
<head>
<title></title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
</head>
<body>
<h2>Your quotes</h2>
<table>
<thead>
<tr>
<th>Автор</th>
<th>Цитата</th>
<th>Ссылка</th>
</tr>
</thead>
<tbody data-bind="foreach: quotesArray">
<tr>
<td data-bind="text: quoteAuthor">toDo</td>
<td data-bind="text: quoteText">toDo</td>
<td data-bind="text: quoteLink">toDo</td>
</tr>
</tbody>
</table>
<button data-bind="click: addQuote">Add quote</button>
<script type="text/javascript" src="koQuotesScript.js"></script>
</body>
</html>
答案 0 :(得分:2)
你有一个计时问题,因为你的ajax调用是异步的。当您第一次调用newQuote()
时,会立即将新对象添加到数组中,但该对象缺少quoteAuthor属性。它缺少任何属性,直到你的ajax调用返回,然后定义那些属性,但同时淘汰不知道要绑定什么。
您可以为这三个属性指定引用对象的默认值,也可以重构代码,以便在ajax调用返回之前不会将对象添加到数组中。