2013-08-08 2 views
0

내가 Durandal 1.2을 사용하고, 내 뷰 모델에 난 기능 활성화가 :durandal 활성화 기능 비동기 코드

self.activate = function (data) { 
     function update(clienteId) { 
      self.Loading(true); 
      return $.when(
       clienteRepository.ClienteCompact(clienteId), 
       clienteRepository.Prodotti(clienteId), 
       clienteRepository.Interventi(clienteId), 
       clienteRepository.Abbonamenti(clienteId) 
       ).then(function (cliente, prodotti, interventi, abbonamenti) { 
        self.Cliente(cliente[0]).Prodotti(prodotti[0]).Interventi(interventi[0]).Abbonamenti(abbonamenti[0]); 
        self.Loading(false); 
        debugger; 
       }); 
     }; 

     var clienteId = data.splat[1]; 
     if ($.isNumeric(clienteId)) { 
      return update(); 
     } else { 
      return true; 
     } 
    }; 

을하고 난 기능 beforeBind 있습니다

self.beforeBind = function() { 
     debugger; 
    }; 

문제가 기능이다를 beforeBind 아약스 요청이 끝나기 전에 호출되어 뷰가 비어 있습니다.

문제가 있습니까?

고마워요;)

답변

0

코드를 함수의 then() 문 내부로 옮기십시오. Then()은 Ajax에서 반환 된 약속을 처리합니다.

다른 옵션은 함수를 생성자 함수에서 표준 함수 문으로 변경하는 것입니다. 함수는 호출되기 전에 평가됩니다.

대신

var myFunc = function() {}; 

사용

function myFunc() {}