我有一個簡單的模板塊:JQuery的TMPL knockout.js單擊不及格項目
<script id="selectedCust" type="text/x-jquery-tmpl">
{{each people}}
<div class="section" personid="${Personid}" >
<div class="sectionActions">
<div>
<a class="action" href="#" data-bind='click: removePerson'>Remove</a>
</div>
</div>
</div>
{{/each}}
</script>
簡單的HTML塊:
<div id="customersArea" data-bind="template: 'selectedCust'">
</div>
與淘汰賽JS:
function viewModel() {
var self = this;
self.people = ko.observableArray();
self.removePerson = function (person, ev) {
self.people.remove(person);
};
self.setPeople = function (ppl) {
var len = ppl.length;
for (var i = 0; i < len; i++) {
this.people.push(ppl[i]);
}
};
}
var mainViewModel = new viewModel();
ko.applyBindings(mainViewModel, $("#customersArea")[0]);
我可以設置人員並查看數據綁定,但是當removePerson被調用時,person參數始終是mainViewModel永遠不會是instan CE。當我嘗試$ root.remove時,我得到了相同的結果,嘗試$ parent.remove我得到$ parent是未定義的。
不訴諸ev參數我做錯了什麼?
添加包括(按順序),該#selectedCust塊可在此之後或knockout.js之後,它在$父仍然出現了錯誤:
<script src="/Scripts/jquery-1.7.1.js" type="text/javascript"></script>
<script src="/Scripts/modernizr-2.0.6-development-only.js" type="text/javascript"></script>
<script src="/Scripts/jquery.validate.min.js" type="text/javascript"></script>
<script src="/Scripts/jquery.validate.unobtrusive.min.js" type="text/javascript"></script>
<script src="/Scripts/jQuery.tmpl.min.js" type="text/javascript"></script>
<script src="/Scripts/knockout-2.0.0.js" type="text/javascript"></script>
<script src="/Scripts/jquery-ui-1.8.16.min.js" type="text/javascript"></script>
<script src="/Scripts/jquery-blockUI.js" type="text/javascript"></script>
我只是把它改爲ko.js的模板:
<div class="section" data-bind="attr: { 'personid': PersonId }" >
<div class="sectionActions">
<div><a class="action" href="#" data-bind='click: $parent.removePerson'>Remove</a></div>
</div>
</div>
和那個作品...所以這是一個與淘汰使用tmpl的問題?
我試過了,得到一個「Uncaught ReferenceError:$ parent not defined」 – maxfridbe 2012-02-14 00:10:18
你可以發佈你的javascript包含嗎? – Etch 2012-02-14 14:20:42
添加了包含的問題。 – maxfridbe 2012-02-14 15:41:07