0

ノックアウトでこのようなオブジェクトを使用しました

            var Employee = function () {
                self.Name = ko.observable();
                self.Id = ko.observable();
                self.Manager = ko.observable();
                self.Title = ko.observable();
                self.Salary = ko.observable();
                self.Age = ko.observable();
            };

ビューモデルは次のようになります

            var EmployeesViewModel = function () {
                var self = this;
                var url = "/api/employees";
                var refresh = function() {
                    $.getJSON(url, { }, function(data) { self.Employees(data); });
                };

                // Public data properties
                self.Employees = ko.observableArray([]);
                self.newEmployee = ko.observable(new Employee());

                // Public operations
                self.addEmployee = function (model, event) {
                    var item = self.newEmployee();
                    alert(model); // always undefined
                    self.Employees.push(item);
                };
                self.removeEmployee = function (employee) {
                    self.Employees.remove(employee);
                    removeEmployee(employee);
                };
                refresh();
            };
            ko.applyBindings(new EmployeesViewModel());

self.addEmployeeメソッドでアイテムを使用すると、アイテムリストに追加されてグリッドに表示されますが、null値が返されます。

編集:jsfiddleの問題 http://jsfiddle.net/magedfarag/b4tsX/

4

1 に答える 1

1

Employeeインスタンスを誤って初期化しています。selfそこでは未定義です。が必要thisです。また、オブザーバブルと同様alert(item.Name)に関数を表示しますitem.Name(オブザーバブルのみをアンラップself.newEmployeeしますが、そのプロパティはオブザーバブルのままです)。

フィドルを更新しました。

于 2012-10-05T09:58:10.243 に答える