簡體   English   中英

剔除“ with”綁定

[英]Knockout “with” binding

我正在嘗試使用“ with”綁定在數組中顯示后代元素。 但是它僅顯示“練習”中的最后一項,我想查看所有這些。 如何解決這個問題? 然后,如何使數組中的每個項目都可編輯?

我的ViewModel:

    function AppViewModel() {   
    var self = this;

    self.workouts = ko.observableArray([
        {name: "Workout1", exercises:{
            name: "Exercise1.1",
            name: "Exercise1.2",
            name: "Exercise1.3"
        }},
        {name: "Workout2", exercises:{
            name: "Exercise2.1",
            name: "Exercise2.2",
            name: "Exercise2.3"
        }},
        {name: "Workout3", exercises:{
            name: "Exercise3.1",
            name: "Exercise3.2",
            name: "Exercise3.3"
        }},        
        {name: "Workout4", exercises:{
            name: "Exercise3.1",
            name: "Exercise3.2",
            name: "Exercise3.3"
        }},        

]);

    self.removeWorkout = function() {
        self.workouts.remove(this);
    };
}

ko.applyBindings(new AppViewModel());

風景:

<div class="content">
    <ul data-bind="foreach: workouts">
        <li>
        <span data-bind="text: name"> </span>
         <a href="#" data-bind="click: $parent.removeWorkout">Remove</a>
         <ul data-bind="with: exercises">
            <li data-bind="text: name"></li>
         </ul>
        </li>
    </ul>   
</div>

這是jsfiddle上的代碼: http : //jsfiddle.net/9TrbE/

謝謝!

您聲明為對象的Exercises屬性應為數組。

self.workouts = ko.observableArray([
    {name: "Workout1", exercises:[
        { name: "Exercise1.1" },
        { name: "Exercise1.2" },
        { name: "Exercise1.3" }
    ]},
]);

因此,您可以使用以下視圖:

<div class="content">
    <ul data-bind="foreach: workouts">
        <li>
        <span data-bind="text: name"> </span>
         <a href="#" data-bind="click: $parent.removeWorkout">Remove</a>
         <ul data-bind="foreach: exercises">
            <li data-bind="text: name"></li>
         </ul>
        </li>
    </ul>   
</div>

宣告:

var exercises = {
    name: "Exercise1.1",
    name: "Exercise1.2",
    name: "Exercise1.3"
};

就像這樣做:

var exercises = {
    name: "Exercise1.1",
};
exercises.name: "Exercise1.2";
exercises.name: "Exercise1.3";

使用此獲取它這是jsfiddle的代碼

self.workouts = ko.observableArray([
    {name: "Workout1", exercises:[
        { name: "Exercise1.1" },
        { name: "Exercise1.2" },
        { name: "Exercise1.3" }
    ]},
]);

` http://jsfiddle.net/9TrbE/8/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM