KO 구성 요소는 params로 전달할 때 관찰 가능 참조를 수신합니다. 구성 요소가 참조로 수신하면이 관찰 가능에 쓸 수 있으며 뷰 모델에 반영됩니다. 그러나 ko-es5 플러그인 (super awesome)을 사용하는 경우 KO 구성 요소를 수신하는 대신 observable에 대한 참조가 computeObservable의 일부를 수신하므로 KO 구성 요소에 쓸 수 없습니다. 이것은 예기치 않은 행동입니까?knockoutjs 구성 요소의 내부에서 param으로 수신 된 관찰 가능 항목에 쓸 수 없습니다.
http://jsfiddle.net/kapuca/k0fw8w18/
<voting params="votes: votes"></voting>
<template id="voting-tpl">
<button data-bind="click: increment ">Up</button>
<div data-bind="text: votes"></div>
</template>
ko.components.register('voting', {
viewModel: function(params) {
var self = this;
self.votes = params.votes;
self.increment = function(){
self.votes(self.votes() + 1);
};
return self;
},
template: { element: 'voting-tpl' }
});
function Vm(){
this.votes = ko.observable(5);
return this;
}
ko.applyBindings(new Vm());
내가 ES5 플러그인을 사용하지 않은
http://jsfiddle.net/kapuca/jwea6zaL/
<voting params="votes: votes"></voting>
<template id="voting-tpl">
<button data-bind="click: increment ">Up</button>
<div data-bind="text: votes"></div>
</template>
ko.components.register('voting', {
viewModel: function(params) {
var self = this;
self.votes = params.votes;
self.increment = function(){
self.votes(self.votes + 1);
};
return ko.track(self);
},
template: { element: 'voting-tpl' }
});
function Vm(){
this.votes = 5;
return ko.track(this);
}
ko.applyBindings(new Vm());
덕분에,'ko.getObservable ($ 데이터를 사용하여 sintaxe ' 투표 ')'좋은 것입니다. 나는 그것을 수행하고' 와 같이 사용하는 함수를 작성하고 있었다. 어쨌든 당신은 이것이 예상 된 행동이 아니라는 것에 동의해야합니다. 고마워요. –