2016-05-22 2 views
1

私はRally APIとJS、そしてStackoverflowについてかなり新しいです。私は今までのすべての質問に答えてStackoverflowを使用していますが、私は新しいTimeEntryValuesを追加することについて何かを見つけることができないようです。ラリーで新しいTimeEntryValueを作成する方法

私は新しいTimeEntryValuesを追加することができるアプリケーションを構築しています。私はTimeEntry の項目を追加したり読み込んだりすることができますが、TimeEntryValuesの場合は、ブラウザのトレースを見るときにHourフィールドをポストするように見えます。

以下は、同じ問題を示す単純化されたコードです。

launch: function(){  
    //For this example, pre-define Time Entry Reference, Date, and Hour value 
    var myTimeEntryItem = "/timeentryitem/1234"; 
    var myDateValue = "2016-05-20T00:00:00.000Z"; 
    var myHours = 2.5; 

    //Check if Time Entry Value (TEV) already exists 
    var TEVstore = Ext.create('Rally.data.WsapiDataStore', { 
     model: 'TimeEntryValue', 
     fetch: ['ObjectID','TimeEntryItem','Hours','DateVal'], 
     filters: [{ 
      property: 'TimeEntryItem', 
      operator: '=', 
      value: myTimeEntryItem 
     }, 
     { 
      property: 'DateVal', 
      operator: '=', 
      value: myDateValue 
     }], 

     autoLoad: true, 
     listeners: { 
      load: function(TEVstore, tevrecords, success) { 
       //No record found - TEV does not exist 
       if (tevrecords.length === 0) { 
        console.log("Creating new TEV record"); 

        Rally.data.ModelFactory.getModel({ 
         type: 'TimeEntryValue', 
         success: function(tevModel) { 
          var newTEV = Ext.create(tevModel, { 
           DateVal: myDateValue, 
           Hours: myHours, 
           TimeEntryItem: myTimeEntryItem 
          }); 

          newTEV.save({ 
           callback: function(result, operation) { 
            if(operation.wasSuccessful()) { 
             console.log("Succesful Save"); 
             //Do something here 
            } 
           } 
          }); 
         } 
        }); 
       } else { 
        console.log("TEV Record exists."); 
        //Do something useful here 
       } 
      } 
     }, 
     scope: this 
    });        
} 

私が間違っていることは何かを歓迎します。 ありがとう

答えて

0

これは、実際には、WSAPI属性メタデータとサーバーへのデータの永続化に使用されるクライアント側のモデルの不一致によってApp SDKに長年にわたる欠陥があります。

基本的に、DateValとTimeEntryItemフィールドはrequiredとreadonlyのマークが付けられていますが、意味がありません。本当に、それらは作成時に書き込み可能で、その後は読み取り専用でなければなりません。

あなたのアプリケーションで行う必要があるのは、新しいTimeEntryValueを保存しようとする前に、DateValとTimeEntryItemフィールドを永続性としてマークしておくとよいでしょう。

//workaround 
tevModel.getField('DateVal').persist = true; 
tevModel.getField('TimeEntryItem').persist = true; 

//proceed as usual 
var newTEV = Ext.create(tevModel, { 
    DateVal: myDateValue, 
    Hours: myHours, 
    TimeEntryItem: myTimeEntryItem 
}); 
// ... 
+0

コードスニペットでは、 'TimeEntryValue'は実際には 'TimeEntryItem'(説明のとおり)ですが、それ以外の場合はこの回避策が有効です。ありがとう。 – Dieter

+0

が修正されました。それはあなたのためにうれしい! –

関連する問題