SORU
3 ŞUBAT 2012, Cuma


Alma "Olamaz mülk 'nodeType ko çağırırken' boş" okuyun.applyBindings

Bu nakavt kodu var:

function Task(data) {
    this.title = ko.observable(data.title);
    this.isDone = ko.observable(data.isDone);
}

function TaskListViewModel() {
    // Data
    var self = this;
    self.tasks = ko.observableArray([]);
    self.newTaskText = ko.observable();
    self.incompleteTasks = ko.computed(function() {
        return ko.utils.arrayFilter(self.tasks(), function(task) { return !task.isDone() });
    });

    // Operations
    self.addTask = function() {
        self.tasks.push(new Task({ title: this.newTaskText() }));
        self.newTaskText("");
    };
    self.removeTask = function(task) { self.tasks.remove(task) };
}

ko.applyBindings(new TaskListViewModel());

Bu html

<head>
    <script type="text/javascript" src="jquery-1.7.1.min.js"></script>
    <script type="text/javascript" src="knockout-2.0.0.js"></script>
    <script type="text/javascript" src="script.js"></script>
</head>
<body>
    <h3>Tasks</h3>

    <form data-bind="submit: addTask">
        Add task: <input data-bind="value: newTaskText" placeholder="What needs to be done?" />
        <button type="submit">Add</button>
    </form>

    <ul data-bind="foreach: tasks, visible: tasks().length > 0">
        <li>
            <input type="checkbox" data-bind="checked: isDone" />
            <input data-bind="value: title, disable: isDone" />
            <a href="#" data-bind="click: $parent.removeTask">Delete</a>
        </li> 
    </ul>

    You have <b data-bind="text: incompleteTasks().length"> </b> incomplete task(s)
    <span data-bind="visible: incompleteTasks().length == 0"> - it's beer time!</span>
</body>

Örnek bir Nakavt internet sitesinde bulunduğu gibi aynı, ama ben çalıştırdığınızda, Krom Ateş Böceği bu mesaj verir:

Yakalanmamış eğer data: okuma özelliği 'nodeType' null

Bu script benim: bu hat için nakavt dosyası ve ilgili

ko.applyBindings(new TaskListViewModel());

Ve bu hata bu satırı (1766) nakavt üzerinde işaret:

var isElement = (nodeVerified.nodeType == 1);

Neyi yanlış yapıyorum?

CEVAP
3 ŞUBAT 2012, Cuma


Bu sorun yaratıldı önce HTML bir öğe bağlamaya çalıştığım için olmuyordu.

Senaryomu HTML (kafa) üstüne yüklendi ama HTML benim kod (sadece kapanış gövde etiketinden önce) altında yüklü olması gerekiyordu.

İlginiz için teşekkürler James Allardice.

Olası bir çözüm defer="defer" kullanıyor

<script src="script.js" type="text/javascript" defer="defer"></script>

Eğer komut herhangi bir belge içerik oluşturmak için gidiyor değilse bunu kullanın. Bu içerik için komut dosyası yüklemeden önce yüklenecek bekleyebilir tarayıcı söyler.

Further reading.

Umarım yardımcı olur.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Murray Winiata

    Murray Winia

    2 ŞUBAT 2009
  • Roger Huffman

    Roger Huffma

    4 ŞUBAT 2007
  • Top10Series

    Top10Series

    26 Kasım 2008