2014-07-05 5 views
0

사용자가 가능한 한 많은 코스를 추가 할 수있는 기본 양식이 있습니다. 각 과정은 커리큘럼에 속해야합니다. 나는 이것을 knockout.js 프레임 워크 위에 구축하기로 결정했다. 커리큘럼 드롭 다운 메뉴 (self.curriculumList)의 값을 하드 코딩 할 수있었습니다. 하지만 난 드롭 다운 메뉴를 채우기 위해 MySQL의 DB에서 값을 가져 오는 데 어려움을 겪고있다. 어떻게해야합니까? 당신이 성공 콜백의 데이터에 액세스하고 관찰 할 수있는 배열에 할당해야하므로 JSFIDDLE서버 값으로 드롭 다운 메뉴 채우기 - knockout.js

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)); 
+0

이 어디 아약스 호출입니다 ... asynchonous입니까? –

+0

@raheelshan 나는'self.curriculumList = $ .getJSON..'을 추가했지만 이제는 드롭 다운 목록에 [object Object]가 표시됩니다. –

답변

2

아약스 호출

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