フロントエンドとバックエンドに Appframework と Knockout js を使用して、Cordova/Phonegap アプリを作成しています。私が遭遇している問題は、最初に読み込まれたパネルのヘッダーで発生しています。
HTML:
<div id="afui">
<div id="content">
<!--CLASS LIST VIEW -->
<div class="panel" title="Classes" id="classList"
data-footer="none" selected="true">
<header>
<div style="float:right" data-bind="click:addClass"
class="button icon add white"></div>
<h1>Classes</h1>
</header>
<ul class="list" data-bind="foreach: classes">
<li data-bind="click:openClass, attr: { id: id, name: name }">
<a href="#categoryList">
<span style="padding-right:20px" data-bind="text: name">
</span>Grade:
</a>
</li>
</ul>
</div>
<!-- CATEGORY VIEW -->
<div class="panel" id="categoryList" title="Class Name">
<header>
<a id="backButton" href="javascript:;" class="button"
style="visibility: visible; ">Back</a>
<h1 data-bind="text: header "></h1>
<div style="float:right" data-bind="click:addCategory"
class="button icon add white">
</div>
</header>
<ul class="list" data-bind="foreach: categories">
<li data-bind="text:name"></li>
</ul>
</div>
</div>
</div>
id="classList"
そのため、ヘッダーのボタンの最初のパネルではaddClass
、クリック、タップ、またはその他の種類のユーザー操作がトリガーされません。
パネルへのリンクを含むリスト項目をタップしてid="categoryList"
そのパネルに遷移すると、そのヘッダーの右上にあるイベント付きのボタンがclick:addCategory
機能します。
クリックイベントを発生させる唯一の方法はaddClass
、モデルを初期化するときです...
ko.applyBindings(classModel, document.getElementById('classList'));
ko.applyBindings(categoryModel, document.getElementById('categoryList'));
classModel
ko バインディングの 2 番目のパラメーターを指定しないことによるものです。もちろん、これは問題になります。複数のビューがあり、各モデルが監視するコンテナーを指定する必要があるからです。
モデルを見る
クラスモデル:
function classInfo(name, id, parent) {
var self = this;
self.name = ko.observable(name);
self.score = ko.observable('');
self.id = ko.observable(id);
self.openClass = function(data, event) {
parent.currentClass(event.currentTarget.name);
};
}
function classListViewModel() {
var self = this;
//class array object
self.classes = ko.observableArray([]);
//current class name
self.currentClass = ko.observable().publishOn("currentClass");
//remove a class from the model
self.removeClass = function(obj) {
//remove the class
};
//add a new class to the model
self.addClass = function() {
//add a new using classInfo object
};
}
それで、ここで何が起こっているのですか?Appframework がメイン ページのヘッダーに奇妙なことをして、click:addClass
イベントが発生しない原因になっていますか?
どんな洞察/助けも大歓迎です、ありがとう!