2014-02-17 35 views
2

我有以下的淘汰賽代碼 my Knockout code
淘汰賽JS - ko.utils.arrayFirst不起作用

我嘗試返回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

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; 
}; 

此外,在input更新data-bind使用新的樂趣ction:data-bind="value: getMealNameById(1)"