knockout.js의 Zundocomi Kiyoshi(DoCoMo 광 대응 버전)
10562 단어 JavaScriptknockoutjs동목청지
텍스트 필드의 문을 변경하면 실행 중이든 아예 발동하든 즉시 변경이 반영됩니다.
html
<div>
<input type="text" data-bind="textInput: zun"/>
<input type="text" data-bind="textInput: doko"/>
<input type="text" data-bind="textInput: kiyoshi"/>
</div>
<div>
interval(ms):<input type="text" data-bind="value: interval"/>
</div>
<div>
<button data-bind="click: start">start</button>
</div>
<div data-bind="foreach: results">
<span data-bind="text: $data"></span>
</div>
<div class="completed">
<span data-bind="text: kiyoshi, visible: isCompleted"></span>
</div>
JavaScriptvar ZundokoViewModel = function() {
this.zun = ko.observable("ズン");
this.doko = ko.observable("ドコ");
this.kiyoshi = ko.observable("キヨシ!");
this.pattern = [this.zun, this.zun, this.zun, this.zun, this.doko];
this.interval = ko.observable(500);
this.results = ko.observableArray();
this.start = function() {
this.results.removeAll();
this.next();
};
this.next = function() {
this.results.push(Math.random() < 0.5 ? this.zun : this.doko);
if (!this.isCompleted()) {
setTimeout(this.next.bind(this), this.interval());
}
};
this.isCompleted = ko.computed(function() {
var len = this.results().length;
if (len < this.pattern.length) return false;
var tails = this.results().slice(len - this.pattern.length);
for (i = 0; i < this.pattern.length; i++) {
if (tails[i] != this.pattern[i]) return false;
}
return true;
}, this);
};
var viewModel = new ZundokoViewModel();
ko.applyBindings(viewModel);
텍스트 필드의 데이터 바인딩은 "textInput"을 사용하여 입력을 즉시 반영합니다.
value
Enter 키를 누를 때 초점이 맞지 않을 때만 반영)<input type="text" data-bind="textInput: zun"/>
임의로 선택한 ZundoCo는
observableArray
results
속성에 저장됩니다.이때observable 대상
this.zun()
을 귀속값this.zun
이 아닌 직접 저장하면 수치의 변경 사항을 즉시 반영할 수 있습니다.this.results.push(Math.random() < 0.5 ? this.zun : this.doko);
Reference
이 문제에 관하여(knockout.js의 Zundocomi Kiyoshi(DoCoMo 광 대응 버전)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tag1216/items/63fbb803767f76d9c1ec텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)