1

別のチェックボックス フィールドを有効にする (true にする) たびに、エンティティの EDIT ビューで「datetime」フィールド値を更新する必要があります。

NGA フィールド

nga.field('launchDate', 'datetime')
       .label('Launch date')

nga.field('active', 'boolean')
       .template('<active-game-field field="::field" entity="::entity" game="entry"></active-game-field>')

問題は、「アクティブ」テンプレート用に作成したディレクティブ内で、いくつかのロジックを実行する必要があり、そこから「launchDate」のフロントエンド要素の値を変更したいということです。

たとえば、「::fields」などの属性を使用して、フォームのすべてのフィールドをディレクティブに渡すなど、これを簡単に行う方法はありますか?

現在、require: '^form' または '::entity' を介してフィールドにアクセスできますが、これらの値は JSON 要求/応答に対してのみ変更され、フロントエンド フィールドの値は変更されません。

ディレクティブ

module.exports = ['ngDialog', function activeGameField(ngDialog) {
return {
    require: '^form',
    restrict: 'E',
    scope: {
        'field': '&',
        'game': '&',
        'entity': '&'
    },
    link: function (scope, element, attrs, formCtrl) {

        scope.updateLaunchDate = function (elem) {
            document.activeElement.blur();

            if (elem.value == true) {
                ngDialog.openConfirm({
                    template: '\
                    <p>Do you want to update the launch date of this game to now?</p>\
                    <div class="ngdialog-buttons">\
                        <button type="button" class="ngdialog-button ngdialog-button-secondary" ng-click="confirm(false)">No</button>\
                        <button type="button" class="ngdialog-button ngdialog-button-primary" ng-click="confirm(true)">Yes</button>\
                    </div>',
                    showClose: false,
                    closeByDocument: false
                }).then(function (value) {
                    if (value) {
                        var date = new Date(Date.now());
                        scope.game().values.launchDate = date; // JSON value modified properly after clicking on save entity, but not the frontend value. In this callback I would like to do something like\'elem.value = date;' but for the 'launchDate' element instead if 'this' (active checkbox element).                   
                    }
                });
            }
        }
    },
    template:
        '<input type="checkbox" ng-model="value" id="active" name="active" class="form-control ng-pristine ng-untouched ng-valid" \
            ng-click="updateLaunchDate(this)">'
};

前もって感謝します。

4

1 に答える 1

0

私はそれほど好きではありませんが、最後に、JavaScrit が ID で「launchDate」要素にアクセスし、要素の値を変更して、これを直接解決しました。

document.getElementById("launchDate").value = dateFormat(now, "yyyy-mm-dd HH:MM:ss");

angularまたはng-adminを使用してもっとやりたかったのですが、このアプローチではわかりませんでした。

于 2016-05-03T12:50:19.470 に答える