无法让parsley.js使用渲染中的javascript与meteor一起工作

时间:2013-12-11 09:34:57

标签: meteor parsley.js

我尝试使用parsley来验证meteor:Using Parsley.js with Meteor using HTML Code

我在Ubuntu 13.10上运行流星0.6.6.3,添加了包jquery并从大气(https://atmosphere.meteor.com/package/parsleyjs)添加了欧芹1.1.7和陨石。

我还测试了来自client / lib的当前版本1.2.2的欧芹(在用mrt删除parsleyjs之后)。

知道我无法使用HTML标记进行验证我创建了一个像这样的模板

 <template name="new_customer">
   <form id="new_customer_form">
   <div class="newCustomer">         
      <div class="lookupcell">
         <input type="text" size="1" 
                name="new-customer-name" 
                id="new-customer-name" 
                class="new-customer-name" 
                placeholder="neue Firma/Person" 
                parsley-notblank="true" />
      </div>
      <div class="lookupcell">
         <input type="text" size="1" id="new-customer-email" 
                name="new-customer-email" 
                id="new-customer-email" 
                parsley-type="email" 
                parsley-trigger="keyup" 
                class="new-customer-email" placeholder="Email" />
      </div>
   </div>
   <div style="text-align: right;">
      <button type="submit">Add</button>   
      </div>
   </form>
</template>

以及以下用于设置的javascript

Template.new_customer.rendered = function () {
   console.log("rendered new_customer");
   $new_customer_form = $( '#new_customer_form' );
   if (! $new_customer_form) { 
      console.log("form not found.");
      return; 
   }
   $new_customer_form.parsley();
   $new_customer_form.parsley( 'addItem', '#new_customer_name' );
};
当我尝试使用以下stacktrace添加字段#new_customer_name时,

meteor在最后一行的渲染时崩溃

[09:44:11.969] "Exception from Deps afterFlush function: ParsleyForm.prototype.addItem@http://localhost:3000/packages/parsleyjs.js?ed9f338553f590de7edeb7b3e5ca8cb568f2e74d:1152
bind@http://localhost:3000/packages/parsleyjs.js?ed9f338553f590de7edeb7b3e5ca8cb568f2e74d:1295
$.fn.parsley@http://localhost:3000/packages/parsleyjs.js?ed9f338553f590de7edeb7b3e5ca8cb568f2e74d:1305
Template.new_customer.rendered@http://localhost:3000/client/X4Lizenzen.js?7d0644137e559b675577266ad6e2f78f087b3453:151
Template.__define__/partial/html</html<.rendered@http://localhost:3000/packages/templating.js?5944cd5e16b26fbf83959a0fe92d7754029a624d:181
scheduleOnscreenSetup/</<@http://localhost:3000/packages/spark.js?3a050592ceb34d6c585c70f1df11e353610be0ab:443
_.forEach@http://localhost:3000/packages/underscore.js?13ab483e8a3c795d9991577e65e811cd0b827997:130
scheduleOnscreenSetup/<@http://localhost:3000/packages/spark.js?3a050592ceb34d6c585c70f1df11e353610be0ab:441
.flush@http://localhost:3000/packages/deps.js?5ac28feec1f3e0539889ecde598dd9d01e408b41:265
"

堆栈没有告诉我实际问题是什么(或者说我不明白:-) 所以我想知道链接问题的作者如何通过render()中的设置完成所有设置。任何人的想法?

更新:事实证明我犯了一个简单的错误,直到今天早上才发现。 我在模板中有id="new-customer-name",并尝试使用#new_customer_name向欧芹注册该文件。这不起作用,更重要的是,连字符不能用于id-strings。纠正错误后,它工作。

1 个答案:

答案 0 :(得分:0)

我想你需要添加data-parsley-validate,如下所示。如果它不使用它的工作让我知道。我想知道在表单中使用data-parsley-validate是如何呈现的。

  

表单id =“new_customer_form”data-parsley-validate