2

无法将 json 映射到可观察数组。我使用教程(http://learn.knockoutjs.com/)中的代码。

function Movie(data) {
    this.name = ko.observable(data.name);
    this.description = ko.observable(data.description);
    this.duration = ko.observable(data.duration);
    this.id = ko.observable(data.id);
    this.imdb_id = ko.observable(data.imdb_id);
    this.original_name = ko.observable(data.original_name);
    this.poster = ko.observable(data.poster);
    this.type = ko.observable(data.type);
    this.year = ko.observable(data.year);
}

function MovieListViewModel() {
    // Data
    var self = this;

    self.moviesArray = ko.observableArray([]);
    self.searchQuery = ko.observable();

    self.searchMovies = function () {
        $.getJSON("/api/v1/movies/search/", {"query": self.searchQuery }, function(allData) {
            var mappedMovies = $.map(allData.movies, function(item) { return new Movie(item) });
            console.log(mappedMovies); // in this line output: [Movie, Movie, Movie, Movie, Movie, Movie]

            self.moviesArray(mappedMovies);
            console.log(self.moviesArray); // in this line output: []
        });    
    };
}

ko.applyBindings(new MovieListViewModel());

我不明白出了什么问题。

PS对不起我的英语

4

1 回答 1

2

{"query": self.searchQuery }

应该

{"query": self.searchQuery() }

console.log(self.moviesArray)

应该

console.log(self.moviesArray())
于 2013-08-08T05:57:41.153 回答