getJSON 时未设置 KnockoutJS 默认值
KnockoutJS default value not set when getJSON
我从 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 有效,但我现在在控制台中收到此错误:"Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user’s experience.":
self.accounts = ko.observableArray([]);
$.ajax({
url: "entry_account_mysql.php",
async: false,
success: function(data) {
self.accounts(data);
}
});
回到$.getJSON?但是怎么办?
将您的 select 包裹在虚拟元素绑定中 if
:
<!-- ko if: accounts.length -->
<select class="form-control" data-bind="options: accounts, value: account"></select>
<--! /ko -->
这可确保仅当 accounts
包含任何元素时才会呈现该元素,这样应该可以解决您的计时问题。
我从 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 有效,但我现在在控制台中收到此错误:"Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user’s experience.":
self.accounts = ko.observableArray([]);
$.ajax({
url: "entry_account_mysql.php",
async: false,
success: function(data) {
self.accounts(data);
}
});
回到$.getJSON?但是怎么办?
将您的 select 包裹在虚拟元素绑定中 if
:
<!-- ko if: accounts.length -->
<select class="form-control" data-bind="options: accounts, value: account"></select>
<--! /ko -->
这可确保仅当 accounts
包含任何元素时才会呈现该元素,这样应该可以解决您的计时问题。