2013-03-08 2 views
4

Ember 1.0.0-rc1을 사용하여 작은 응용 프로그램을 부트 스트랩하려고합니다. 응용 프로그램은 이미지가있는 물건을 다룰 것입니다. 아직 애플리케이션에 백엔드가 없으므로 웹 페이지의 소스에 임베드 한 일부 JSON에서 FixtureAdapter를 사용하려고합니다.기본 저장소를 Ember.js의 FixtureAdapter로 어떻게 설정합니까?

불행히도 상점을 제대로 연결하지 못하는 것 같습니다. YourAppName.Store를 설정해야한다는 오류가 계속 발생합니다.

Uncaught Error: assertion failed: Your application does not have a 'Store' property defined. Attempts to call 'all' on model classes will fail. Please provide one as with 'YourAppName.Store = DS.Store.extend()'

하지만 완전히 놓친하지 않았다면, 내가 그것을 설정 않았다가 :

window.YIH = Ember.Application.create(); 

YIH.Photo = DS.Model.extend({ 
    url: DS.attr('string'), 
}); 
YIH.Photo.FIXTURES = JSON.parse(document.getElementById('images').innerHTML); 
YIH.Store = DS.Store.extend({ 
    revision: 12, 
    adapter: DS.FixtureAdapter 
}); 

YIH.photoController = Em.ArrayController.create({ 
    content: YIH.Photo.all(), // blows up 
}) 

나는 다른 속성을 설정이 작품을 만들려고 주위를 해킹,하지만 아무 소용했습니다.

+0

http://emberjs.com/guides/getting-started/using-fixtures/ – hiwaylon

답변

8

업데이트 : 바이올린 지금 엠버 - 데이터와 엠버 RC2를 사용하여 당신은 단순히 위해 컬렉션에 대한 Ember.ArrayController 또는 Ember.ObjectController 중 하나에서 컨트롤러 클래스와 extend을 추가, create에 컨트롤러를 필요가 없습니다 (12)

레브 단일 개체.

Ember는 이러한 컨트롤러를 인스턴스화하고 응용 프로그램 수명 동안 관리합니다.

설정에 FixtureAdapter와 저장소가이 작업을 수행 :

YIH.Router.map(function() { 
    this.resource('photos', function() { 
     this.route('photo', { path: ':photo_id' }); 
    }); 
}); 

YIH.IndexRoute = Em.Route.extend({ 
    redirect: function() { 
     this.transitionTo('photos'); 
    } 
}); 

YIH.PhotosRoute = Em.Route.extend({ 
    model: function() { 
     return YIH.Photo.find(); 
    } 
}); 

YIH.PhotosPhotoRoute = Em.Route.extend({ 
    model: function(params) { 
     return YIH.Photo.find(params.photo_id); 
    } 
}); 

: 설치 컨트롤러의 content으로

YIH.Store = DS.Store.extend({ 
    revision: 12, 
    adapter: 'DS.FixtureAdapter' 
}); 

, 다음과 같은 경로를 통해 그것을 할 것을 추천 컨트롤러는 model에서 setupController을 수신하며, 쓰기를하지 않아도 Route으로 구워집니다. 다음과 같이 표시됩니다.

SomeRoute = Em.Route.extend({ 
    setupController: function(controller, model) { 
     controller.set('content', model); 
    } 
}); 

원하는 경우 수정할 수 있습니다.

코드를 추가하지 않았기 때문에 JSON 형식이 올바른지 확실하지 않습니다. 어느 경우 든 상점/어댑터의 기본 키가 id이 아닌 경우를 제외하고 각 JSON 객체는 id 속성을 가져야하며 모델은이 id 속성이 아닌 이되어야합니다. 애플리케이션 전반에서 ID를 직접 호출하는 경우가 있지만 이름 지정 규칙을 사용해야하는 경우가 있습니다 (예 : '사진'경로의 동적 세그먼트).

이 설비를 추가하기 위해
YIH.Photo = DS.Model.extend({ 
    url: DS.attr('string'), 
    caption: DS.attr('string') 
}); 

,이 같은 JSON을 제공해야합니다 :

YIH.Photo.FIXTURES = [ 
    { id: 1, 
     url: 'http://ecx.images-amazon.com/images/I/516cyMC9O7L.jpg', 
     caption: 'Image 1' 
    }, 
    { id: 2, 
     url: 'http://ecx.images-amazon.com/images/I/51og8BkN8jL._SS250_.jpg', 
     caption: 'Image 2' 
    } 
]; 

당신은이 샘플 바이올린을 확인 할 수 있습니다 :이 같은 모델에 대한

http://jsfiddle.net/schawaska/n3hY6/

관련 문제