1

I get function text'function b(){if(0 ...'。のクリックイベント(removeAFoo-> removeFoo)でfoo.Idの値を取得しようとすると、プロパティ値を取得するために何を変更する必要がありますかfoo.Idの?もう1つの奇妙なことは、viewModel.foos配列でindexOf()を呼び出すと、その配列が長さがゼロであると言っていても、インデックスを返すことです。

function getFoos() {
    viewModel.foos([]);
    var data = [{
        Id: 1,
        Name: 'Joe' },
    {
        Id: 2,
        Name: 'Jon' },
    {
        Id: 3,
        Name: 'Jim' }        
    ]

    for (var i = 0; i < data.length; i++) {
        var f = new foo();
        f.Id(data[i].Id);
        f.Name(data[i].Name);

        viewModel.foos.push(f);
    }
};

var viewModel = {
    foos: ko.observableArray([]),

    reloadFoos: function() {
        getFoos();
    },

    removeAFoo: function(foo) {
        removeFoo(foo);
    }
};

var foo = function() {
    this.Id = ko.observable();
    this.Name = ko.observable();
};

function removeFoo(foo) {
    alert(viewModel.foos.indexOf(foo));
    alert(foo.Id);
    viewModel.foos.splice(viewModel.foos.indexOf(foo), 1);
}

ko.applyBindings(viewModel);

getFoos();
​

<div data-bind="foreach: foos">
    <div style="float: left">
        <button data-bind="click : $parent.removeAFoo, attr: { id: Id }">
        </button>
        <label data-bind="text: Name">
        </label>
    </div>
</div>​

http://jsfiddle.net/suedeuno/gAUgV/12/

4

1 に答える 1

6

foo.idの値を取得するには、かっこを使用することを忘れないでください。

そのようです:

document.write(foo.Id());

于 2012-07-13T17:56:29.537 に答える