:이 thusly 히 적용받을포스 KO 업데이트를 자동으로
var databaseViewModel = function() {
var self = this;
self.database = ko.observableArray([]).publishesTo("database");
}
var calcViewModel = function() {
var self = this;
self.replicatedDatabase = ko.observableArray([]).subscribeTo("database");
}
: 유일한 문제는
ko.applyBindings({
databaseViewModel: new databaseViewModel(),
calcViewModel: new calcViewModel()
});
의 그 replicatedDatabase
에 연결된 드롭 다운 상자에 아무 항목도 표시되지 않습니다. 바인딩 업데이트를 강제로 수행 할 수 있음을 알고 있습니다.
database.valueHasMutated();
하지만 어디서 언제 알 수 없습니다.
그러나 ko.applyBindings
을 시도했지만 새로 작성한 databaseViewModel
에 액세스하는 방법을 잘 모르겠습니다. 나는 그것이 만들어진 후에 databaseViewModel
을 시도했지만, KO가 바인드되었을 때 자동으로 바인딩을 업데이트한다고 생각합니다. 실제로 바인딩을 변경했는지는 확실하지 않습니다. 어쨌든 드롭 다운에는 적용되지 않습니다.
내가 여기서 무엇을해야하는지 잘 모르겠다.
참고로, 및 publishesTo
메시지 버스 스타일 통신을 수행하려면 knockout-postbox
을 사용하고 있습니다. 따라서 database
observable이 변경되면 모든 가입자에게 알리므로 replicatedDatabase
은 databaseViewModel
이 시작된 인스턴스에서 업데이트되었을 수 있습니다.
KO를 원활하게 사용하는 것은 관측 대상을 업데이트하거나 바인딩하는 것입니다. 이러한 관측치 자체가 별도의 관측 가능 객체 그래프 일 수 있습니다. 그러한 경우 컨테이너 자체가 업데이트되는 곳에서는'with/withBindings'와 같은 것을 사용하여 포함 된 관측 값을 쉽게 바인딩 할 수 있도록 컨테이너를 언 랩핑하십시오. – user2864740
임에도 내 질문에 적용되는 방법, 내 observable 모든 valuess 함께 업데이트됩니다, 따라서 메시지 버스, 업데이트해야합니다 ... 그래서 거기에 다른 해결책이 될 guna가 있습니다 –
'databaseViewModel'입니다 관찰 할 수있는 것이 아니다. 만약 그렇다면, 관찰 할 수있는 것처럼 일관되게 업데이트 될 수 있습니다. 이것이 "새로 생성 된 databaseViewModel에 접근하기"어려운 이유입니다. (실제 문제는 KO가 관찰 할 수있는 *마다 바인딩하기 때문에 오래된 관찰 가능에 바인딩 될 가능성이 높습니다.) – user2864740