2016-05-11 8 views
0

いくつかの値を変更するには、私の編集ビューのいくつかの属性にアクセスしたいと思います。javascriptを使ってsails.jsモデルの属性にアクセスするには?

私は<%=course.scoreAlgo=>のようなものでアクセスしようとしましたが、動作しません。

scriptタグ内のモデルの属性にアクセスできないようです。どのように私はこれにアクセスすることができますすべてのすべての助けに感謝しています!

コースモデル:

module.exports = { 

    attributes: { 
    code:{ 
     type: "string" 
    }, 

    name:{ 
     type: "string" 
    }, 

    recitations:{ 
     type: 'array', 
     defaultsTo: 0 
    }, 

    finishedAssignments:{ 
     type: "array" 
    }, 

    recitationScore:{ 
     type: 'integer', 
     defaultsTo: 0 
    }, 

    recitationGroup:{ 
     type: "string", 
     defaultsTo: "none" 
    }, 

    shown:{ 
     type: "string", 
     defaultsTo: "no" 
    }, 

    scoreAlgo:{ 
     type:"array" 
    }, 

    takes:{ 
     model: 'student' 
    } 
    } 
}; 

そして、これは私が仕事をするためにしようとしているコードは次のようになります。あなたは.ejsに渡すとしたいすべての値が表示されるように

<form action="/course/update/<%= course.id %>" method="POST"> 
    <h2>Edit course</h2> 
    <input value="<%= course.code%>" type="text" name="code"><br/> 
    <input value="<%= course.name%>" type="text" name="name"><br/> 
    <input value="<%= course.shown %>" type="text" name="shown"><br/> 
    <input value="<%= course.recitationScore%>" type="text" name="recitationScore"><br/> 
    <p>Score algo, specify by saying how many have to be completed for each "subgroup". 
    If two from a, two from b and one from c means full score, put "2,2,1"</p> 
    <input value="<%=course.scoreAlgo%>" type="text" name="scoreAlgo"> 
    <input type="button" value="Calculate recitationScore" onclick="calcScore()"> 
    <script> 
    function calcScore(){ 
     var stringArray = course.finishedAssignments; 
     var scoreAlgo = course.scoreAlgo; 
     for(var i=0; i < stringArray.length; i++){ 
     var str = stringArray[i]; 
     var sStr = str.split(","); 
     for(var j=0; j < sStr.length; j++){ 
      var count = scoreAlgo[i] 
      var s = sStr[i]; 
      var sS = s.split((i+1).toString); 
      if(sS.length >= count){ 
      var score = sS.length*33; 
      course.recitationScore = course.recitationScore + score; 
      console.log(score); 
      } 
     } 
     } 
    } 
    </script> 
    <input type="submit" value="Edit course"/> 
</form> 

答えて

0

にあなたも<script></script>

function calcScore(){ 
    var stringArray = <%= course.finishedAssignments %>; 
    var scoreAlgo = <%= course.scoreAlgo %>; 
    for(var i=0; i < stringArray.length; i++){ 
    var str = stringArray[i]; 
    var sStr = str.split(","); 
    for(var j=0; j < sStr.length; j++){ 
     var count = scoreAlgo[i] 
     var s = sStr[i]; 
     var sS = s.split((i+1).toString); 
     if(sS.length >= count){ 
     var score = sS.length*33; 
     //course.recitationScore = course.recitationScore + score; <!- not sure what should it do 
     console.log(score); 
     } 
    } 
    } 
} 
+0

しかし、私に<%= %>または<%- %>でラップする必要がありますf属性を '<%=%>の中に入れ、変数が定義されていません。たとえば、 'stringArray変数が定義されていない可能性があります'と言います。 あなたがコメントした最後のビットは、sS times 33のlenを暗唱のスコアに追加することです。私は 'course.recitationScore + = len * 33'をやることができると思いますか? – Gurkmeja101

+0

OK ..これらは配列なので、JSONに変更する必要があります。 <% - JSON.stringify(data)%>そういうビューでモデルを更新することはできません。 javascript paramとしてコースを使用することはできません。本当に必要な場合は、そのようにすることができます:var course = <% - JSON.stringify(course)%>; – Bonanza

+0

Okey、ありがとう。 そのようなモデル属性を更新することはできません。まあそれは吸う、それはこの方法でそれに簡単だろうと思った:) – Gurkmeja101

関連する問題