Knockout Js - ko.utils.arrayFirst不起作用

时间:2014-02-17 09:34:23

标签: jquery knockout.js binding

我有以下Knockout代码 my Knockout code

我尝试每行返回mealName 此功能获取当前availableMeals的ID 并且应该返回一个对象

self.getMealById = function(id) {
     ko.utils.arrayFirst(self.availableMeals, function(item) {
         return item.id == id;
     });
};

<span data-bind="text: $root.getMealById(meal.id)"  />

出于某种原因,她没有这样做,为什么?

1 个答案:

答案 0 :(得分:1)

arrayFirst将返回一个对象,并且您正在尝试将对象绑定到输入字段中的文本值,这将无效。

如果你的函数是返回一个字符串值,它会正常工作,这是更新的小提琴:

http://jsfiddle.net/B66np/133/

新功能将膳食名称作为字符串值,请注意.mealName;末尾的arrayFirst

self.getMealNameById = function (id) {
    var meal = ko.utils.arrayFirst(self.availableMeals(), function (item) {
        return item.id == id;
    }).mealName;

    return meal;
};

另外,更新data-bind上的input以使用新功能:data-bind="value: getMealNameById(1)"