2016-09-25 5 views
-1

vue에서 반환 한 개체를 표시하려면 어떻게해야합니까? 지방은 Ok이지만 도시 v-for는 작동하지 않습니다. Laravel 5.2 Vue.js 계산이 작동하지 않습니다.

내 블레이드입니다 : 이것은

<select v-model="ProvinceModel" name="province" id="province" class="border-radius-0 form-control padding-y-0"> 
    <option v-for="province in provinces" value="@{{ province.id }}"> @{{ province.name }} </option> 
</select> 

<select name="city" id="city" class="border-radius-0 form-control padding-y-0"> 
    <option v-for="city in cities" value="@{{ city.id }}"> @{{ city.name }} </option> 
</select> 

내 스크립트

new Vue({ 
     el: '#vue', 
     methods: { 
      fetchProvinces: function() { 
       this.$http.get('{{url('api/provinces')}}').then(function (provinces) { 
        this.$set('provinces', provinces.data) 
       }); 
      } 

     }, 
     computed: { 
      cities() { 
       this.$http.get("{{url('api/cities')}}/" + this.ProvinceModel).then(function (cities) { 
        console.log(cities.data); 
        this.$set('cities', cities.data) 
       }); 

      } 
     }, 
     ready: function() { 
      this.fetchProvinces() 
     }, 
    }); 

그리고 경로

Route::get('cities/{provinces_id}', function ($id = 8) { 
    return \App\province::find($id)->cities()->get(); 
})->where('id', '[0-9]+'); 
+0

질문에서 알 수있는 한 'select2' (https://select2.github.io/)를 사용하고 있지 않습니다. 그렇다면 질문을 업데이트하여이를 반영하십시오. – ceejayoz

+0

@ceejayoz 만약 당신이 나를 도울 수있는 내 문제가 해결됩니다. –

+0

나는 당신을 도우려고 노력하고 있습니다. 내 대답을 읽으십시오. 나는 당신에게 필요한 정보를주었습니다 – ceejayoz

답변

1

계산 된 함수는 무언가를 반환해야합니다. 넌 아무것도 돌려주지 않을거야.

또한 this.cities을 데이터로 설정하려고 시도했지만 this.cities은 이미 계산 된 기능입니다. 하나는 다른 것을 무시하고 모순 된/혼란스러운 행동을 일으킬 것입니다.

도시를 비동기식으로 가져 오는 방법은 fetchProvinces 메소드와 동일해야합니다. ProvinceModel이 변경되면 선택자의 이벤트를 사용하거나 ProvinceModel 값의 Vue watcher를 사용하여 가져올 수 있습니다.

사이드 노트 : 일반적으로 구성 요소의 data 매개 변수에 데이터 항목을 정의하는 것이 가장 좋습니다. JS 콘솔을 확인하면 Vue가 그 일에 대한 경고를 던질 가능성이 있습니다.

+0

다음 내용을 읽어보십시오. [Link1] (https://github.com/vuejs/vue/issues/3165) [Link2] (https://github.com/vuejs/vue-validator/issues/273) [Link3] (https : //github.com/vuejs/vue/issues/2064) –

+0

@MortezaNegahi 그 중 어떤 것도 귀하의 상황과 관련이 없습니다. – ceejayoz

+0

그러나 문서에서 @change는 존재하지 않습니다! 그리고 vue 저자는이 사건이 아마 내려 간다고 말했다! –

0

Vuejs 유연하지, 당신은 그것을 통과, JQuery와 통해 가치를 얻을 수 있습니다 제어. 엘리먼트에 의한 ref 메소드가 좋다.

Vuejs는 작업자가 바쁠 때 기다릴 수 없으므로 가치가 없을 때 자연스럽게 변하지 않습니다.

+0

"유연하지 않은 Vuejs"무엇? – ceejayoz

+0

부정적인 등급을 부여하기 전에 먼저 작성된 것을 발견하십시오! 요소의 chnage 이벤트에 대한 Veujs가 유연하지 않을 것으로 예상하지 않았습니다! 정적 페이지에서는 작동하지 않습니다. 동적 페이지! –

+0

@muhamadzolfaghari 나는 아직도 당신이하는 말에 대해 완전히 모릅니다. Vue.js는 매우 유연하며 두 개의 선택 상자가 상호 작용할 수 있습니다. OP가하고자하는 것은 Vue 내에서 완전히 수행 할 수 있습니다. jQuery가 필요하지 않습니다. – ceejayoz