使用服务器值填充下拉菜单 - knockout.js

时间:2014-07-05 03:44:01

标签: javascript jquery knockout.js

我有一个基本表单,允许用户添加尽可能多的课程。每门课程都必须属于课程。我决定在knockout.js框架之上构建它。我已经能够对课程下拉菜单(self.curriculumList)的值进行硬编码。但是我很难从mysql db中获取值来填充下拉菜单。我怎样才能做到这一点? JSFIDDLE

var initialData = [{
       courseName: ""

   }];/**/

   var CourseModel = function (courses) {
       var self = this;
       self.courses = ko.observableArray(ko.utils.arrayMap(courses, function (course) {
           return {
               courseName: course.courseName,
               selectedOptionValue : course.selectedOptionValue
           };
       }));


       self.curriculumList = $.getJSON('functions/getCurriculum.php', function(data) {
        data;
       });

       self.addCourse = function () {
           self.courses.push({
               courseName: "",
               selectedOptionValue : ko.observable("Select One")
           });
       };

       self.removeCourse = function (course) {
           self.courses.remove(course);
       };

       self.save = function() {
        self.lastSavedJson(JSON.stringify(ko.toJS(self.courses), null, 2));
       };


      self.lastSavedJson = ko.observable("");
   };

   ko.applyBindings(new CourseModel(initialData));

1 个答案:

答案 0 :(得分:2)

ajax调用是异步的,您是否需要访问成功回调中的数据并将其分配给可观察数组...

   self.curriculumList = ko.observableArray();
   $.getJSON('functions/getCurriculum.php', function(data) {
       self.curriculumList(data);
   });