knockout.js没有从json映射observable数组

时间:2013-08-08 05:51:58

标签: javascript knockout.js

无法将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());

我不明白出了什么问题。

P.S。对不起我的英文

1 个答案:

答案 0 :(得分:2)

{"query": self.searchQuery }

应该是

{"query": self.searchQuery() }

console.log(self.moviesArray)

应该是

console.log(self.moviesArray())