2017-03-03 38 views
0

我正在使用基因敲除(v3.2)自動完成,並且我有一個返回值列表的ajax調用。映射從ajax調用本地變量返回的對象的問題,用於基因敲除自動完成

var remoteData = $.ajax({ 
       url: '@Url.Action("GetAllSkills", "EmployeeSkills")', 
       data: { }, 
       dataType: 'json', 
       type: 'GET', 
       contentType: "application/json; charset=utf-8", 
       success: function (data) { 
        var array = ($.map(data, function (item) { 
         return { 
          id: item.SkillsId, 
          name: item.SkillName 
         }; 
        }));  
       } 
      }); 

返回的對象被分配給對RemoteData變量,其具有稱爲「responseText的」屬性,其具有以下數據 - >「[{」 SkillId「:1,」 SkillName「:」測試技能1" },{「SkillId」:2,「SkillName」:「測試技能2」},{「SkillId」:3,「SkillName」:「測試技能3」},{「SkillId」:4,「SkillName」測試技能4「},{」SkillId「:5,」SkillName「:」測試技能5「},{」SkillId「:6,」SkillName「:」測試技能6「},{」SkillId「:7, SkillId「:」SkillId「:8,」SkillName「:」abc「},{」SkillId「:10,」SkillName「:」測試技能34「},{」SkillId「:11 ,「SkillName」:「xyz」},{「SkillId」:12,「SkillName」:「全新技能!」},{「SkillId」:13,「SkillName」 SkillId「:1000,」SkillName「:」New Test Skill 1「},{」SkillId「:1001,」SkillName「:」test1「},{」SkillId「:1002」SkillName「 「},{」 SkillId 「:1003年,」 SkillName「: 「C#」},{ 「SkillId」:1004, 「SkillName」: 「ASP.NET」},{ 「SkillId」:1006, 「SkillName」: 「MVC」},{ 「SkillId」:1007, 「SkillName」: 「PHP」},{ 「SkillId」:1008, 「SkillName」: 「F#」},{ 「SkillId」:1009, 「SkillName」: 「角」},{ 「SkillId」:1010, 「SkillName」:「測試100「}]」

裏面我有下面的代碼我的視圖模型...

function ActivityViewModel() { 
    var self = this; 
    self.skills = remoteData; 
    self.selectedOption = ko.observable(''); 
    self.options = self.skills.map(function (element) {  
     return { 
     label: element.SkillName, 
     value: element.SkillsId, 
     object: element 
     }; 
    }); 

我收到以下錯誤 - > self.skills.map是不是新ActivityViewModel功能。

我不知道爲什麼會發生這種情況。有什麼建議麼?

回答

1

您正在將remoteData分配給ajax調用的結果。這與將其設置爲由ajax調用檢索的值不同。 ajax函數返回一個promise對象,您必須添加回調才能檢索值。

jQuery Deferred and Promise walkthrough

嘗試成功回調內部分配給您的對RemoteData變量,而不是。這可能行不通,這取決於代碼的其他部分的結構。如果在ajax調用完成之前嘗試使用remoteData變量並且成功回調,它仍然看起來是未定義的。

var remoteData; 
$.ajax({ 
    url: '@Url.Action("GetAllSkills", "EmployeeSkills")', 
    data: {}, 
    dataType: 'json', 
    type: 'GET', 
    contentType: "application/json; charset=utf-8", 
    success: function (data) { 
     remoteData = ($.map(data, function (item) { 
      return { 
       id: item.SkillsId, 
       name: item.SkillName 
      }; 
     })); 
    } 
}); 
相關問題