0

У меня проблема с Durandal. Я работал как документы и получал ошибку, что функция не определена, что я не так?Durandal function undefined

backend.js:

define(function(require){ 
    return { 
     getActivePeriods:function(){ 
      $.getJSON("files/ajax.php?q=getActivePeriods", function(data){ 
       return data; 
      }); 
     } 
    }; 
}); 

periods.js:

define(function (require) { 
     var backend = require('backend'); 
     var ko = require('knockout'); 

     return { 
      active_periods:ko.observableArray([]), 
      activate:function(){ 
       var that = this; 
       backend.getActivePeriods().then(function(results){ 
        that.active_periods(results); 
       }); 
      } 
     }; 
    }); 

Ошибка:

ERROR: backend.getActivePeriods(...) is undefined 
TypeError: backend.getActivePeriods(...) is undefined 

Что здесь неправильно, может anybodyhelps меня? Спасибо!

+0

Вы забыли поставить 'return' перед' $ .getJSON() '? Вы должны прочитать, как работают асинхронные функции и обещания. – Brett

ответ

2

Вы должны вернуть обещание от функции в файле бэкэнд

getActivePeriods:function(){ 
      return $.getJSON("files/ajax.php?q=getActivePeriods"); 

     } 
+0

Thx, теперь он работает – fibi