2014-03-12 2 views
0

최근 부트 스트랩이 포함 된 축소판 갤러리를 구현했으며 더 큰 크기의 팝업으로 이미지를 열 수 있기 위해 모달을 사용하고 싶습니다.Emberjs는 배열 모음에서 하나의 값을 얻습니다.

지금까지 모달이 트리거되었지만 클릭 한 이미지에 대해 특정 값을 표시하는 방법을 알 수 없습니다.

이 내 섬네일 세대 :

여기
<div class="row"> 
    {{#each value in images}} 
     <div class="col-md-4"> 
      <a class="thumbnail" data-toggle="modal" data-target="#myModal"> 
       <img src="data:{{unbound value.mimeType}};base64,{{unbound value.image}}"> 
      </a> 
     </div> 
    {{/each}} 
</div> 

내 모달 (아주 기본적인 일) :

<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> 
    <div class="modal-dialog"> 
     <div class="modal-content"> 
      <div class="modal-header"> 
       <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button> 
       <h4 class="modal-title" id="myModalLabel">title of my image</h4> 
      </div> 
      <div class="modal-body"> 
       Images here 
      </div> 
     </div> 
    </div> 
</div> 

내 모달 내부에 표시하는 하나 개의 특정 값을 검색하기 위해 핸들과 수 있습니까?

나는 js에서 그것을하는 방법을 알았지 만, ember와 handlebars는 다소 힘들었다.

[편집] 내 페이지 조회의 컨트롤러 :

App.EnquiryController = Ember.ObjectController.extend({ 
    isUpdating: false, 

    actions: { 
     showUpdateForm: function() { 
      this.setProperties({ isUpdating: true }); 
     }, 
     customerUpdate: function() { 
      this.setProperties({ isUpdating: false}); 
      var data = this.get('model'); 
      var obj = { 
       customerName: data.enquiry.customerName, 
       customerEmail: data.enquiry.customerEmail, 
       customerPhone: data.enquiry.customerPhone 
      }; 
      console.log(obj); 
      Ember.$ 
      .post(host + '/enquiry/' + data.enquiry.id, obj, function(data) { 
       console.log('DEBUG: Updating customer data OK'); 
      }); 
     }, 
     cancelCustomerUpdate: function() { 
      this.setProperties({isUpdating: false}); 
     }, 
     tradeInUpdate: function() { 
      var data = this.get('model'); 
      var obj = { 
       mileage: data.tradeIn.mileage, 
       valuationPrice: data.tradeIn.valuationPrice 
      }; 
      console.log(data); 
      Ember.$ 
      .post(host + '/enquiry/' + data.enquiry.id + '/tradeIn', obj, function(data) { 
      console.log('DEBUG: Update TradeIn OK') 
      }) 
     }, 
     summaryUpdate: function() { 
      var data = this.get('model'); 
      var obj = { 
       deposit: data.totals.deposit, 
       discount: data.totals.discount 
      }; 
      Ember.$ 
      .post(host + '/enquiry/' + data.enquiry.id, obj, function(data) { 
       console.log('DEBUG: Update Summary OK'); 
      }); 
      console.log(obj); 
     } 
    } 
}); 

내가 거기 숨기고 그것을 보여 탭 부트 스트랩을 사용하여 데이터 표시를 많이 가지고있다.

[EDIT2] 오류 :

Uncaught TypeError: Object function() { 
if (!wasApplied) { 
    Class.proto(); // prepare prototype... 
} 
o_defineProperty(this, GUID_KEY, undefinedDescriptor); 
o_defineProperty(this, '_super', undefinedDescriptor); 
var m = met...<omitted>...t' 

나는 좋은 이미지 링크를 가지고하지만 난 내 컨트롤러에서 뷰에서 컨트롤러 변수 ..

var ClientView = Em.View.extend({ 
    actions: { 
     selectItem : function(item) { 
      console.log(item.uri); 
      App.EnquiryController.set("imageSrc", item.uri); 
     } 
    } 
}); 

{{#view ClientView}} 
    <div class="row"> 
     {{#each value in images}} 
     <div class="col-md-4"> 
      <a class="thumbnail" data-toggle="modal" data-target="#myModal" {{action "selectItem" this.value target="view"}}> 
       <img src="data:{{unbound value.mimeType}};base64,{{unbound value.image}}"> 
      </a> 
     </div> 
     {{/each}} 
    </div> 
{{/view}} 

을 설정할 수 없습니다 [EDIT3] :

App.EnquiryController = Ember.ObjectController.extend({ 
    imageSrc: null 
}); 
+1

컨트롤러를 게시하면 하나의 해결책을 제시 할 수 있습니다. 나는 일반적으로 모달을 열고 모 델을 "selectedItem"과 같은 컨트롤러 속성에 바인딩 한 다음 모달 핸들 막대 템플릿에서 사용합니다. 나는 또한 액션 메소드 내에서 모델 주위를 지나치지 않도록 콜렉션을 반복 할 때 아이템 컨트롤러를 설정하는 것을 선호한다 ... –

+0

나는 나의 컨트롤러로 당신을 위해 포스트를 편집했다. – SuperMarco

답변

0

다른 문맥에서 그 문제가있었습니다. 내가이를 넣어

var ClientView = Em.View.extend({ 
    actions: { 
    selectItem : function(item){ 
     ClientController.set("imageSrc", item.src); 
    } 
    } 
}) 

을 그리고 모달의 : 그래서 내가 할 것은 예를 들어보기

{{#view ClientView}} 
<div class="row"> 
    {{#each value in images}} 
     <div class="col-md-4"> 
      <a class="thumbnail" data-toggle="modal" data-target="#myModal" {{#action selectItem this target="view"> 
       <img src="data:{{unbound value.mimeType}};base64,{{unbound value.image}}"> 
      </a> 
     </div> 
    {{/each}} 
</div> 
{{/view}} 

그리고했다

나는이 당신에게

을 도울 수 있기를 바랍니다
<img {{bindAttr src="ClientController.imageSrc"}}> 

+0

당신의 아이디어를 모두 이해할 수는 없지만, 코드에 구현 한 후에이 오류가 있습니다 : '잡히지 않은 ReferenceError : ClientController가 정의되지 않았습니다.'어떻게해야합니까? 컨트롤러를 만드시겠습니까? 그러나 무엇을 할 것인가? – SuperMarco

+0

컨트롤러에 이어 "ClientController"대신 "App.EnquiryController"를 사용하고 "imageSrc"변수를 추가하여 원하는 값을 저장해야합니다. –

+0

하지만 항목에 전체 모델이 있고 사용자가 마침내 아니오를 클릭 한 이미지를 알지 못합니까? 그리고 특정 이미지를 넣으려고했습니다 (base64에서). 오류가 있습니다 (메인 포스트를 오류). – SuperMarco

관련 문제