1

本当に単純なものが欠けているかもしれませんが、ここで間違っているところを誰か指摘できますか?

よろしくお願いします。

<div data-bind="foreach: agencies">
    <div data-bind="text:name"></div>
    <div data-bind="text:email"></div>
    <button data-bind="click: removeAgency">remove</button>
</div>

<script type="text/javascript">

    var agency = [{
        name : ko.observable('a'),
        email : ko.observable('b')
    }, {
        name: ko.observable('c'),
        email: ko.observable('d')
    }];

    var vm = {
        agencies: ko.observableArray(agency),
        removeAgency: function(agency) {
            this.agencies.remove(agency);
        }
    };

    ko.applyBindings(vm);
</script>

これは私が得るエラーです: Uncaught Error: Unable to parse bindings. メッセージ: ReferenceError: removeAgency が定義されていません。バインディング値: クリック: removeAgency

4

2 に答える 2

4

そのhtmlで代理店にバインドしていますが、メソッドはビューモデルにあります。次のようなものを試してください:

<button data-bind="click: $parent.removeAgency">remove</button>

スコープを正しくするには、VM を再調整する必要がある場合があります。

var ViewModel = function(){
    var self = this;
    self.agencies = ko.observableArray(agency),
    self.removeAgency = function(agency) {
        self.agencies.remove(agency);
    }
};

var vm = new ViewModel();

私はまだスコープと混同することがありますが、認めざるを得ませんが、これを試してみて、何が起こるか見てみましょう。

于 2013-03-01T10:47:02.970 に答える
0

作業例:

http://jsfiddle.net/marko4286/7RDc3/2034/

ドキュメントを読むhttp://knockoutjs.com/documentation/foreach-binding.html

于 2013-03-01T11:18:25.603 に答える