나는 완전히 여기에 뭔가를 누락 될 수 있습니다,하지만 난 다음이 : 콜렉션을 생성 한 후 backbone.js를 사용하여 함수를 실행 하시겠습니까?
- '모든'데이터를 캡슐화하는 모델 그것은 건설
- 나는 데이터가 초기화 될 때 컬렉션 실행하려면 내 질문은 합성 컬렉션에 관한
로드 일부 코드를 가지고 데이터로 인스턴스화됩니다 컬렉션. Collection의 범위 밖에서이 작업을 수행 할 수 있지만 캡슐화하는 것이 좋습니다 (그렇지 않으면 이니셜 라이저가있는 '클래스'로 만드는 것이 무엇인지).
- 나는 내가
initialize()
기능에 해당 코드를 넣을 수 있다고 생각하지만, 그 모델이 채워지기 전에, 내가 컬렉션을 구성하는 모델 (this.models
이 비어)에 액세스 할 수 없습니다 실행됩니다. 그런 다음 이벤트에 바인딩 할 수 있다고 생각했지만 초기화 후에 이벤트가 트리거되지 않았습니다. 그들은 자신의 종점에서
fetch
컬렉션을로드하는 경우 될 것입니다,하지만 나는 그것을하지, 내가 기존 데이터에서 컬렉션을 초기화 해요.
내 질문 : (즉 this.models
가 비어 있지 않은)가 데이터로 초기화 후 즉시 컬렉션에서 실행하는 코드를 초기화하는 방법을.
'외부'코드가 필요없이이를 수행 할 수 있습니까?
여기에 데모 코드가 있습니다. 더 잘 설명 할 수 있습니다.
var Everything = Backbone.Model.extend({
url: "/static/data/mydata.json",
parse: function(data)
{
this.set("things", new Things(data.things, {controller: this}));
}
});
var Thing = Backbone.Model.extend({
});
var Things = Backbone.Collection.extend({
model: Thing,
initialize: function(data, options)
{
// HERE I want access to this.models.
// Unfortunately it has not yet been populated.
console.log("initialize");
console.log(this.models);
// result: []
// And this event never gets triggered either!
this.on("all", function(eventType)
{
console.log("Some kind of event happend!", eventType);
});
}
});
var everything = new Everything();
everything.fetch();
// Some manual poking to prove that the demo code above works:
// Run after everything has happened, to prove collection does get created with data
setTimeout(function(){console.log("outside data", everything.get("things").models);}, 1000);
// This has the expected result, prints a load of models.
// Prove that the event hander works.
setTimeout(function(){console.log("outside trigger", everything.get("things").trigger("change"));}, 1000);
// This triggers the event callback.
나는 컬렉션의 생성을 동 기적으로 수행하기를 바랬다. (예를 들어,'Everything.parse'의 다음 줄에서 사용할 수있다.) 분명히 연기하면 안된다. 나는 수집 물에서 논리를 옮겨야 할 수도 있습니다. Backbone.js에 대한 변경 요청 (아마도 ... – Joe
) 'defer'를 사용하면 webCGM에 EventListener를 설치하려는 경우 이상적입니다. WebCGM 다이어그램은 독립적 인 객체로로드되며, 멍청한 그림으로 생명을 시작합니다. 이벤트 전송을 시작하도록 명시 적으로 알려야합니다. 그런 다음 이벤트를 백본 인프라로 다시 파이프 할 수 있습니다. 나는 같은 기술이 다른 플러그인 (SVG/PDF 등)과 상호 작용하는 데 사용될 수 있다고 생각합니다. 대부분이 broswer에서 잘 작동하지 않습니다. –