2016-07-06 3 views
0

У меня есть коллекция, которая обрабатывает значения по умолчанию для форм. Мне нужно создать пользовательский интерфейс, чтобы обновлять значения по умолчанию сами, вместо того, чтобы обновлять силу через mongo.Обновить форму в методе с использованием autoform

Я использовал обновление aldeed - каждая функциональность. Данные извлекаются из БД и отображаются в таблице. Однако, когда я пытаюсь обновить, вводя новые значения в текстовое поле, он не сохраняется. Фактически, он продолжает бросать эту ошибку, о которой я не знаю.

Exception in template helper: TypeError: Cannot read property 'namedContext' of undefined 
    at Object.autoFormFieldIsInvalid 

В качестве примера, вот что я работаю с:

Монго Коллекция:

meteor:PRIMARY> db.testCollection.find() 
{ "_id" : ObjectId("577ccd87f57f43d790c3ec49"), "schemaName" : "test_schema", "label" : "test_lable", "value" : "test_value" } 

Схема:

test_schema = new SimpleSchema({ 
    "schemaName": { 
     type: String, 
    }, 
    "label": { 
     type: String, 
    }, 
    "value": { 
     type: String, 
    } 
}); 

testCollection.attachSchema(test_schema); 

Te mplate:

<template name = "testTemplate"> 

<table class="table table-bordered table-condensed"> 
    <thead> 
    <tr> 
     <td style="width: 85px">Schema Name</td> 
     <td style="width: 85px">Label</td> 
     <td>Default Value</td> 
     <td style="width: 250px">New Default Value</td> 
    </tr> 
    </thead> 
    <tbody> 
    {{#each items}} 
     <tr> 
     <td>{{this.schemaName}}</td> 
     <td>{{this.label}}</td> 
     <td>{{this.value}}</td> 
     <td> 
     {{#autoForm id=updateDefaiultsID type="update" collection=testCollection doc=this autosave=true}} 
      {{> afFormGroup name="value" label=false}} 
     {{/autoForm}} 
     </td> 
     </tr> 
    {{/each}} 
    </tbody> 
</table> 


</template> 

Helper

import { Template } from 'meteor/templating'; 
import '../templates/testTemplate.html'; 


if (Meteor.isServer) { 

    Meteor.publish(null, function() { 
    return testCollection.find(); 
    }); 

    testCollection.allow({ 
    update: function() { 
     return true; 
    } 
    }); 
} 

else if (Meteor.isClient) { 

    Template["testTemplate"].helpers({ 
    items: function() { 
     return testCollection.find({}, {sort: {name: 1}}); 
    }, 
    updateDefaiultsID: function() { 
     return "testTemplate" + this._id; 
    } 
    }); 
} 

ответ

0

Изменить этот из

<td>{{this.schemaName}}</td> 

в

<td>{{this.schema_name}}</td> 
+0

Спасибо Джону, как никогда, я не понимаю, как это поможет. schemaName - это метка, определенная на уровне mongodb, а также уровень схемы. Мое мнение состоит в том, что он фактически не будет заполнять что-либо под столбцом имени схемы, если я должен сделать упомянутое изменение. Не могли бы вы пролить свет на этот аспект? – blueren

+0

вы должны следовать некоторым стандартам структуры данных в формате json, возвращаемом .......... @blueren – Ankanna