2015-02-05 4 views
0

Я пытаюсь изучить нокауты, изучая существующие исходные коды и внося небольшие изменения в них. Исходный код, который я пытаюсь понять здесь, является примером нокаута- sortable.js от Р. Р. Нимейера.привязка нокаута - работа с объектами javascript, но не объектом json

Исходный пример кода: here.

Цель состоит в том, чтобы иметь возможность получить данные с сервера в любом JSon строке или jtoken объекта и использовать его в коде ..

я сделать небольшое изменение в нем и сделать console.log, чтобы получить JSON here

var initialTables = [ 
     new Table("Table One", [ 
      new Student(1, "Bobby", "male"), 
      new Student(2, "Ted", "male"), 
      new Student(3, "Jim", "male") 
     ]), 
     new Table("Table Two", [ 
      new Student(4, "Michelle", "female"), 
      new Student(5, "Erin", "female"), 
      new Student(6, "Chase", "male") 
     ]), 
     new Table("Table Three", [ 
      new Student(7, "Denise", "female"), 
      new Student(8, "Chip", "male"), 
      new Student(9, "Kylie", "female") 
     ]), 
     new Table("Table Four", [ 
      new Student(10, "Cheryl", "female"), 
      new Student(11, "Doug", "male"), 
      new Student(12, "Connor", "male") 
     ]), 
     new Table("Table Five", [ 
      new Student(13, "Cody", "male"), 
      new Student(14, "Farrah", "female"), 
      new Student(15, "Lyla", "female") 
     ]) 
    ]; 

this.tables = ko.observableArray(initialTables); 

объект initialTables преобразуется в JSON с помощью console.log(ko.toJSON(this.tables)), которые можно увидеть в console.log и показано ниже.

[{"students":[{"id":1,"name":"Bobby","gender":"male"},{"id":2,"name":"Ted","gender":"male"},{"id":3,"name":"Jim","gender":"male"}]},{"students":[{"id":4,"name":"Michelle","gender":"female"},{"id":5,"name":"Erin","gender":"female"},{"id":6,"name":"Chase","gender":"male"}]},{"students":[{"id":7,"name":"Denise","gender":"female"},{"id":8,"name":"Chip","gender":"male"},{"id":9,"name":"Kylie","gender":"female"}]},{"students":[{"id":10,"name":"Cheryl","gender":"female"},{"id":11,"name":"Doug","gender":"male"},{"id":12,"name":"Connor","gender":"male"}]},{"students":[{"id":13,"name":"Cody","gender":"male"},{"id":14,"name":"Farrah","gender":"female"},{"id":15,"name":"Lyla","gender":"female"}]}] 

Теперь изменить initialTables к объекту JSON я RECD ранее и вызвать таблицы, как показано ниже, и here

this.tables = ko.observableArray (ko.mapping.fromJS (initialTables));

Теперь, даже если я не вижу каких-либо ошибок, я не вижу initialTables объект отражается в панели результатов ..

Что я делаю не так ??

Вся помощь искренне оценили ..

Благодаря

+2

просто внести изменения, как это 'ko.mapping.fromJS (initialTables)()' скрипку здесь http://jsfiddle.net/supercool/udxr4/750/ –

+0

@supercool, пожалуйста, не стесняйтесь отвечать, а не комментарии, если это действительно ответ. Во-первых, это даст возможность принять ответ для TS, а во-вторых, это поможет другим пропустить вопросы, которые уже приняли ответ. –

ответ

1

также arnab вам не хватает брекеты (), которые должны выполнять свою работу.

Пожалуйста сделайте изменения в этой строке

ko.observableArray(ko.mapping.fromJS(initialTables)) 

к чему-то вроде

ko.observableArray(ko.mapping.fromJS(initialTables)()) 

К наблюдаемому массиву вам нужно пройти Array. Если вы дадите () в конце, вы получите Array (разворачивающийся контент).

Работа скрипку here