2

Rally SDK 2 で、変更セットの Author フィールドなどのハッシュ フィールドを更新するにはどうすればよいですか? Message フィールドを更新する方法を読みましたが、Author["DisplayName"] ハッシュを更新する方法がわかりません。

var new_message = settings.message;
Rally.data.ModelFactory.getModel({
  type: 'Changeset',
  success: function(model) {
         model.load( '1234', {
              fetch: [ 'Artifacts' ],
              callback: function(result, operation) {
                        if ( operation.wasSuccessful() ){
                            var message = new_message;
                            record.set( 'Message', message);
                            record.save( {
                                callback: function( resultset, operation ) {
                                    console.log( "After saving:", resultset );
                                    if ( operation.wasSuccessful() ) {
                                        var that = tree.ownerCt.ownerCt.ownerCt.ownerCt;
                                        that._getChangesets();
                                    }
                                }
                            } ); 
                        }
               }
         })
  }

});

4

1 に答える 1

0

Changeset の Author プロパティのタイプは User です。Rally の WSAPI の他のオブジェクトの関連付けと同様に、このプロパティをリンクしたいオブジェクトの参照に設定するだけです。これは、上記のコード スニペットで現在 Message を設定しているのと同じ方法で設定します。(変更セットが既に作成された後に作成者が書き込み可能であると仮定します)。

record.set('Author', '/user/123456');

コールバックでスコープを指定し、アプリ定義でメンバー関数を使用することで、コードの深くネストされた構造を少し回避することもできます。

_loadChangesetModel: function() {
    //If you already have a changeset record you can get the model
    //via record.self.  Otherwise, load it fresh.
    Rally.data.ModelFactory.getModel({
        type: 'Changeset',
        success: this._onChangesetModelLoaded,
        scope: this
    });
},

_onChangesetModelLoaded: function(model) {
    model.load( '1234', {
        fetch: [ 'Artifacts' ],
        callback: this._onChangesetLoaded,
        scope: this
    });
},

_onChangesetLoaded: function(record, operation) {
    if ( operation.wasSuccessful() ){
        var message = settings.message;
        record.set( 'Message', message);
        record.save( {
            callback: this._onChangesetSaved,
            scope: this
        } ); 
    }
},

_onChangesetSaved: function( resultset, operation ) {
    console.log( "After saving:", resultset );
    if ( operation.wasSuccessful() ) {
        //You shouldn't need to do this now that the scope is correct.
        //I'm guessing 'that' was referring to the app itself?
        //var that = tree.ownerCt.ownerCt.ownerCt.ownerCt;
        this._getChangesets();
    }
},

_getChangesets: function() {
    //refresh
}
于 2013-03-10T16:44:02.410 に答える