Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/479.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 动态地将绑定(例如hasfocus)添加到observable数组中的特定项_Javascript_Knockout.js - Fatal编程技术网

Javascript 动态地将绑定(例如hasfocus)添加到observable数组中的特定项

Javascript 动态地将绑定(例如hasfocus)添加到observable数组中的特定项,javascript,knockout.js,Javascript,Knockout.js,我正在使用knockoutJS来处理一个表中网站名称和URL对的可编辑列表——下面有一个按钮可以添加一个新项目。我的代码基于 有没有一种方法可以在运行时更改绑定?这样我就可以将最后一个项目焦点作为提示,提示用户应该填充它,而不是创建更多的空行,例如: self.website()[length - 1].name.hasfocus = true; var Site = function(name, url) { this.name = ko.observable(name);

我正在使用knockoutJS来处理一个表中网站名称和URL对的可编辑列表——下面有一个按钮可以添加一个新项目。我的代码基于

有没有一种方法可以在运行时更改绑定?这样我就可以将最后一个项目焦点作为提示,提示用户应该填充它,而不是创建更多的空行,例如:

self.website()[length - 1].name.hasfocus = true;
var Site = function(name, url) {
    this.name = ko.observable(name);
    this.name.focused = ko.observable(true);

    this.url = ko.observable(name);
};

您可以通过使用observable来绑定
hasfocus
,而不仅仅是
hasfocus:true
,来实现这一点

我喜欢这样做的一种方法是在字段的主可观察对象之外添加一个
聚焦的
子可观察对象。比如:

self.website()[length - 1].name.hasfocus = true;
var Site = function(name, url) {
    this.name = ko.observable(name);
    this.name.focused = ko.observable(true);

    this.url = ko.observable(name);
};
然后,像
data bind=“value:name,hasfocus:name.focused”
一样绑定,并在检查中设置聚焦的可观察项,使姓氏为空,像
name.focused(true)

以下是一个示例:


如果您的
name
url
是不可观察的,那么您可以添加另一个专门用于控制焦点的可观察对象。

我想在这里添加一个警告。同时设置
window.location.hash
(为了将页面滚动到特定书签),请在将新项目推送到可观察数组(
self.website.push(new dashboardApp.website());
)之前执行此操作,即使所需的输入字段仍在视口中。否则,输入字段将失去焦点。我知道,因为我去过那里。。。