2016-09-08 3 views
0

현재 kendo를 사용하여 Angular js를 사용하는 웹 응용 프로그램을 개발 중입니다. 인라인 편집 격자를 저장할 때 저장 버튼을 숨기고 추가 버튼을 표시하고 싶습니다. 표시 및 숨기기에서 나는 *ngIf을 사용합니다. 내가 정의하는이 클래스에서 public isAddEdit: Boolean; 성공 범위에서 변수에 액세스 할 수 없습니다. 검도 그리드 업데이트의 Ajax 성공에서 전역 변수에 액세스하는 방법은 무엇입니까?

update: function (options) { 

      $.ajax({ 

       url: HttpUrl.UpdateBlog, 
       contentType: "application/JSON", 
       type: "POST", 
       data: JSON.stringify(options.data.models), 
       success: function (result) { 
        options.success(result); 
        this.isAddEdit = false; 
        $('#save').remove(); 
        $('#grid').data('kendoGrid').dataSource.read(); 

         }, 

       }) 

내가 this 그러므로 당신은 당신이 원하는 변수를 accesing되지 않은 AJAX 콜백 기능과 관련이 있다고 생각 내보기

<div id ="btndiv" class="col-sm-12"> 
      <button *ngIf="!isAddEdit" id="addblog" class="k-button grid-top-button-override k-primary add-button page-name" (click)="addStock()">{{'Addblog' | translate}}</button> 
      <button *ngIf="isAddEdit" id ="save" class="k-button grid-top-button-override k-primary save-button page-name" (click)="clicksave()">{{'Save' | translate}}</button>   
     </div> 

     <div class="row grid-override"> 
       <div id="grid"></div> 
     </div> 

답변

0

입니다. 무엇 때문에 NG-경우 DOM 요소를 제거하는 것입니다 않습니다,

 success:(result) => { 
      options.success(result); 
      this.isAddEdit = false; 
      $('#save').remove(); 
      $('#grid').data('kendoGrid').dataSource.read(); 
     }, 
+0

내가 그것은'더 적절한 숨기거나 버튼을 보여주기 위해 NG 쇼, NG 숨기기를 사용하는 생각 : 화살표 기능을 사용해보십시오 . 또한 거기에보기의 새로 고침이 없다고 생각하므로 변수의 값을 읽지 않습니다. 보기에서 어딘가에 변수를 디버그 해보십시오. – yhabib

+0

'setTimeout() {} 안에'console.log (this.isAddEdit)'를 래핑 했습니까? 왜냐하면 응답을 받기 전에 그렇지 않으면 호출 될 것이기 때문입니다. – yhabib

+0

예 값이 변경되었습니다. 나는 응답을 받기 전에 값을 읽었다. 새로 고침이 없으면 문제가 발생할 수 있습니다. – Dino

관련 문제