
その後、ツールボックスを選択する男のような記事が点滅し、彼は何も書くことができなかった。 これは私についてです! 元日、 ViewModel.orgを見つけました。 そして、内部には美しい双方向バインディングがあります。 しかし、「余分な」詳細が混在したレンチが散らばっているガレージの引き出しの感覚は通用しません。 独自のデモで松葉杖 、ジージーをねじ込む方法の良い例です。 そして、私は4か月間立ち往生しています-仕事の後の夜の趣味です。 私はすべてのパッケージを調べましたが 、少なくともBlazeには何とか役立ちます。 著者を嘆願して...結果として、私は新しい名前のTemplate2の自転車を組み立てました。
ご存知のように、単純に行うことは非常に困難です。 それをチェックしてください:
- Blaze Templateと互換性があります。 私たちは彼を愛しています。
- 素晴らしいプロジェクトを移行するための最小限の変更。
- モデル変数の宣言は、
<input value-bind>
属性を介して1回だけ必要です(これは、エイリアンコードのデバッグに特に役立ちます)。 - 入力を検証し、ドキュメントの連想配列を取得してMongoに書き込むだけで、コーディングは一切不要です。
- SimpleSchemaのサポートと他のモデルの拡張性(たとえばAstronomy 2.0が登場しました)。
<body> {{> hello param="123"}} </body> <template name="hello"> <p>props.param {{props.param}}</p> <p>state.value {{state.value}}</p> <form> <input value-bind="value"/> <button type="submit">Submit</button> </form> <p>{{state.errorMessages}}</p> </template>
// - ! Template2('hello', { // , propsSchema: new SimpleSchema({ param: { type: String } }), // modelSchema: Posts.simpleSchema(), // states: {}, // , Template.instance() helpers: {}, events: {}, // , Blaze onCreated() {}, onRendered() {}, onDestroyed() {}, }); // , Template.instance() Template.hello.eventsByInstance({ 'submit form': function(e) { e.preventDefault(); // Get doc after clean and validation for save to model this.viewDoc(function(error, doc) { if (error) return; Posts.insert(doc); }); } }); // . Template.hello.onRendered(function() { var self = this; this.autorun(function() { var doc = Posts.findOne(); if (doc) { // Set doc from model to view self.modelDoc(doc); } }); });
デモを実行しますか? 簡単:
$ git clone https://github.com/comerc/meteor-template2.git $ cd meteor-template2 $ meteor
なぜ写真ですか? これは、 Meteor + MVVMカクテルの後の気持ちです。