我从AngularJS更改为KnockoutJS。最小的问题是我现在已经花了两天了。
<div class="form-group">
<label for="account">Konto:</label>
<select class="form-control" data-bind="options: accounts, value: account</select>
</div>
这是帐户:
self.account = ko.observable('Bargeldkonto');
当我定义以后意识到的时候,这很好用。在我的情况下,选择了第二个选项:
self.accountstest = ko.observable([]);
self.accountstest = ko.observable(['Avadis','Bargeldkonto','Bitcoin','Lohnkonto','Mietkaution','Sparen 3','Sparen 3 Kto. 2','Sparkonto Liam Noa','Sparkonto SQ','Trading SQ']);
但是这种方式不起作用。始终选择第一:
self.accounts = ko.observableArray([]);
$.getJSON("entry_account_mysql.php", function(data) {
self.accounts(data);
//alert(JSON.stringify(data));
console.log("accounts: " + self.accounts());
});
我知道它与计时有关,但是在KnockoutJS中却不知道它的表现。 有人说$ getJson不好。有趣,$。ajax可以工作,但是我现在在控制台中收到此错误:“主线程上的XMLHttpRequest同步已被弃用,因为它对最终用户的体验有不利影响。”:
self.accounts = ko.observableArray([]);
$.ajax({
url: "entry_account_mysql.php",
async: false,
success: function(data) {
self.accounts(data);
}
});
返回$ .getJSON?但是如何?
答案 0 :(得分:1)
将选择内容包装在虚拟元素绑定if
中:
<!-- ko if: accounts.length -->
<select class="form-control" data-bind="options: accounts, value: account"></select>
<--! /ko -->
这可确保仅当accounts
包含任何元素时才呈现该元素,从而应解决您的计时问题。