gpt4 book ai didi

javascript - 如何绑定(bind)到 observable 数组中的某个 observable

转载 作者:行者123 更新时间:2023-11-28 19:26:20 25 4
gpt4 key购买 nike

嗨,我目前正在寻找解决我的问题的方法。我需要在可观察数组的内容中绑定(bind)某个元素的类。我有一个 observable 数组,里面是一个 observable 列表,我需要绑定(bind)到满足我的条件的 observable

function ViewModel(Name) {
var self = this;
self.Observable1 = ko.observableArray([]);
self.Observable1.push(new myfunction2(name));
self.Observable1.push(new myfunction2(name + "1"));
}

function myfunction2(Name) {
var self = this;
self.Name = ko.observable(Name);
self.Name2 = ko.observable(Name);
}

ko.applyBindings(new ViewModel("Hello"));

根据我的代码,我有一个 View 模型,其中包含一个可观察数组,并且在该可观察数组内部有另一个可观察数组,如果它满足我的条件,我需要将我的元素绑定(bind)到该数组,我该怎么做?

这是元素

<div data-bind="???????????????" ></div>

如果Name的值=“Hello”,我想绑定(bind)到数据Name2的示例条件

最佳答案

如果我理解你的问题正确,你可以为你的 ViewModel 类创建一个计算属性,如下所示:

self.SelectedObject = ko.computed(function () {
return ko.utils.arrayFirst(self.Observable1(), function (element) {
return element.Name() === "whatever";
});
});

然后,在 Html 中:

<div data-bind="with: SelectedObject">
<span data-bind="text: Name2"></span>
</div>

为了“吃我自己的垃圾”,这里有一个基于您的代码的工作示例。

function ViewModel(name) {
var self = this;

self.Observable1 = ko.observableArray([]);
self.Observable1.push(new myfunction2(name));
self.Observable1.push(new myfunction2(name + "1"));

self.SelectedObject = ko.computed(function () {
return ko.utils.arrayFirst(self.Observable1(), function (element) {
// Try replacing this with "Hello1", and it will select the other element in the array
return element.Name() === "Hello";
});
});
}

function myfunction2(Name) {
var self = this;

self.Name = ko.observable(Name);
self.Name2 = ko.observable(Name);
}

ko.applyBindings(new ViewModel("Hello"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.0.0/knockout-min.js"></script>
<body>
<div data-bind="with: SelectedObject">
<span data-bind="text: Name"></span>
</div>
</body>

关于javascript - 如何绑定(bind)到 observable 数组中的某个 observable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27815572/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com