2017-01-15 13 views
0

我試圖使用ractive.on和ractive.set更改JSON對象內的值。基本上它會得到input元素中的值(帶有ractive變量),並在用anchor事件按下anchor元素之後將它們賦值給那裏的各個鍵。而不是顯示正確的值,而是顯示Promise。我附上一張圖片供參考。鑰匙顯示Promise作爲射擊後的值ractive.set

https://jsfiddle.net/clestcruz/L38tsud7/

enter image description here

<body> 

    <div id='container'></div> 

    <script id='template' type='text/ractive'> 

     <p>Provide the company information for the:</p> 

     <label>Company Name <span class="required">*</span></label> 
     <input type="text" class="form-text full-width" placeholder="Enter the company name" id="accountName" value="{{leadData.accountName}}"/> 



     <label>Street Name.</label> 
     <input type="text" class="form-text" placeholder="-" id="streetName" value="{{leadData.streetName}}"/> 

     <a class="button cta" on-click="addLead">Create Account</a> 


    </script> 

    <script src='http://cdn.ractivejs.org/latest/ractive.min.js'></script> 

    <script> 

     var app = new Ractive({ 
     el  : '#container', 
     template : '#template', 
    }); 

    var data = { 
     'accountName' : app.get('leadData.accountName'), 
     'streetName' : app.get('leadData.streetName'), 
    } 


     app.on('addLead', function(event) { 
     var data = { 
      'accountName' : app.set('leadData.accountName'), 
      'streetName' : app.set('leadData.streetName'), 
     } 
     console.log(data); 
     }); 

    </script> 


</body> 
+1

我沒有Ractive的經驗,但是如果你想獲取數據,不應該在app中調用'app.get('leadData ...)'而不是'app.set'。在('addLead)'? – jukben

+0

它實際上是無效的反應 – clestcruz

+1

是的,抱歉的錯字。無論如何,讓我覺得設定一個價值是一個承諾... – jukben

回答

1

什麼你大概的意思是app.get,而不是app.set。另外,事件處理程序在實例的上下文中執行。這意味着你不需要引用具有外部變量的實例(在這種情況下,app)。您可以簡單地使用this

app.on('addLead', function(event) { 
    var data = { 
    accountName: this.get('leadData.accountName'), 
    streetName: this.get('leadData.streetName'), 
    } 
    // Do other stuff with data 
});