GVKun编程网logo

在 symfony 中添加 CollectionType 表单时如何维护 Javascript 功能

30

本篇文章给大家谈谈在symfony中添加CollectionType表单时如何维护Javascript功能,同时本文还将给你拓展angularjs–AngularTypeScript:$watchCo

本篇文章给大家谈谈在 symfony 中添加 CollectionType 表单时如何维护 Javascript 功能,同时本文还将给你拓展angularjs – Angular TypeScript:$watchCollection,“controller as”的良好做法、ims.ocrr.vo.lookups.SpecimenCollectionTypeCollection的实例源码、javascript - collection的create方法不能向collection中添加model、JavaScript Collections API?等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

在 symfony 中添加 CollectionType 表单时如何维护 Javascript 功能

在 symfony 中添加 CollectionType 表单时如何维护 Javascript 功能

如何解决在 symfony 中添加 CollectionType 表单时如何维护 Javascript 功能?

我使用 symfonyCollectionType 字段创建了一个表单,以便为两个相关实体添加嵌入式表单。

一切正常,但嵌入表单中的某些字段是 dateType 字段,我想在选择它们时使用 datepicker javascript 调用。

完成所有工作后,我发现 datepicker 弹出窗口 不起作用,因为表单已通过 javascript 加载。 但是,我该怎么做才能让它们工作?

注意:我不写任何代码,因为我遵循了标准 symfony.com 文档提出的程序。但会很高兴 应要求将其张贴在此处。

解决方法

您需要在 javascript 代码中初始化新的日期输入字段(在其中向集合添加新行)。这是一个示例,因为您没有发布任何代码。

function addFormToCollection($collectionHolderClass) {
    var $collectionHolder = $(''.'' + $collectionHolderClass);

    var prototype = $collectionHolder.data(''prototype'');

    var index = $collectionHolder.data(''index'');

    var newForm = prototype;
    
    newForm = newForm.replace(/__name__/g,index);

    $collectionHolder.data(''index'',index + 1);

    var $newFormLi = $(''<li></li>'').append(newForm);
    $collectionHolder.append($newFormLi);

    // initialize new DateTime fields
    var $newRow = $collectionHolder..children().last();
    $newRow.children(''.dateTime'').each(function(){
        initializeDatePicker($(this));
    });
}

angularjs – Angular TypeScript:$watchCollection,“controller as”的良好做法

angularjs – Angular TypeScript:$watchCollection,“controller as”的良好做法

一般来说,在我的Angular / TypeScript应用程序中,我倾向于使用“控制器为”语法.

然而,对于我正在研究的CRUD屏幕,我发现自己偏离了这一点.因此我可以利用$watchCollection /检查更改等我发现自己使用了优秀的章节@baSarat here所建议的模式.即,在视频中(在Angular中以“控制器为”语法之前)@ baSarat在名为vm的$scope上创建一个表示控制器的变量.与在视图中使用“controller as vm”的方式相同,您仍然可以使用vm.myProperty / vm.myFunction()样式语法与模型进行交互.

所以,控制器看起来像这样:

module controllers {

    "use strict";

    interface sageEditRouteParams extends ng.route.IRouteParamsService {
        id: number;
    }

    interface sageEditScope extends ng.IScope {
        vm: SageEdit;
    }

    class SageEdit {

        log: loggerFunction;
        sage: sage;
        title: string;

        private _hasChanges: boolean;

        static $inject = ["$routeParams","$scope","common","datacontext"];
        constructor(
            private $routeParams: sageEditRouteParams,private $scope: sageEditScope,private common: common,private datacontext: datacontext
            ) {

            this.sage = undefined;
            this.title = "Sage Edit";

            this.log = common.logger.getLogFn(controllerId);

            $scope.vm = this;
            $scope.$watchCollection("vm.sage",(newSage: sage,oldSage: sage) => {
                if (newSage && oldSage) {
                    this._hasChanges = true;
                }
            });

            this.activate();
        }

        // Prototype methods

        activate() {
            var id = this.$routeParams.id;
            var dataPromises: ng.IPromise<any>[] = [this.getSage(id)];

            this.common.activateController(dataPromises,controllerId)
                .then(() => {
                    this.log("Activated Sage Edit View");
                    this.title = "Sage Edit: " + this.sage.name;
                });
        }

        getSage(id: number) {
            return this.datacontext.sage.getById(id).then(data => {
                this.sage = data;
                this._hasChanges = false;
            });
        }

        get hasChanges(): boolean {
            return this._hasChanges;
        }
    }

    var controllerId = "sageEdit";
    angular.module("app").controller(controllerId,SageEdit);
}

这样的观点:

<sectionng-controller="sageEdit">
    <section>
        <div>
            <div>
                <buttonng-click="vm.cancel()"
                        ng-disabled="!vm.canSave">
                    <i></i>Cancel
                </button>
                <buttonng-click="vm.save()"
                        ng-disabled="!vm.canSave">
                    <i></i>Save
                </button>
                <span ng-show="vm.hasChanges"https://www.jb51.cc/tag/dis/" target="_blank">dissolve-animation ng-hide">
                    <i></i>
                </span>
            </div>
            <div>
                <div data-cc-widget-header title="{{vm.title}}"></div>
                <div>
                    <div>
                        <label>Name</label>
                        <inputng-model="vm.sage.name" />
                    </div>
                    <div>
                        <label>Username</label>
                        <inputng-model="vm.sage.userName" />
                    </div>
                    <div>
                        <label>Email</label>
                        <inputtype="email"
                               ng-model="vm.sage.email" />
                    </div>
                </div>
            </div>
        </div>
    </section>
</section>

我把它放在一起似乎工作得很好,但我想把它放在那里并得到一些其他观点.在那儿:

>这种方法有任何缺点
>任何原因这都是个坏主意
>更好的选择?

我做了一点挖掘,但没有找到任何结论.

解决方法

魔术弦去除

对于

$scope.$watchCollection("vm.sage",oldSage: sage) => {

您还可以轻松实现重构:

$scope.$watchCollection(()=>this.sage,oldSage: sage) => {

在某些情况下,当您尝试观看foo.bar之类的内容时,foo仍未定义,您可以使用安全包装函数safeWatch(()=> this.foo.bar):

function safeWatch<T extends Function>(expression: T) {
        return () => {
            try {
                return expression();
            }
            catch (e) {
                return null;
            }
        };
    }

控制器与$scope.vm

Fron源代码:
https://github.com/angular/angular.js/blob/36831eccd1da37c089f2141a2c073a6db69f3e1d/src/ng/controller.js#L95

这正是角度为你做的事情. ie $scope.vm = instance(其中vm == indentifier)所以它们是等价的

ims.ocrr.vo.lookups.SpecimenCollectionTypeCollection的实例源码

ims.ocrr.vo.lookups.SpecimenCollectionTypeCollection的实例源码

项目:AvoinApotti    文件:Logic.java   
private boolean validateRequestedTests()
{
    if (form.lyrDetails().tabPathDetails().lyrPathology().tabRequestedTests().Grdtest().getRows().size() == 0)
        return true;

    SpecimenCollectionTypeCollection collTypes = new SpecimenCollectionTypeCollection();
    for (int i = 0; i < form.lyrDetails().tabPathDetails().lyrPathology().tabRequestedTests().Grdtest().getAllRows().length; i++)
    {
        GenForm.lyrDetailsLayer.tabPathDetailsContainer.lyrPathologyLayer.tabRequestedTestsContainer.GrdTestRow specimenorSiteRow = form.lyrDetails().tabPathDetails().lyrPathology().tabRequestedTests().Grdtest().getAllRows()[i];

        if (specimenorSiteRow.getValue() instanceof OrderInvestigationVo)
        {
            if (specimenorSiteRow.getColSpecimen() instanceof SpecimenVo)
            {
                collTypes.add((SpecimenCollectionType) specimenorSiteRow.getColType().getValue());

                if (!specimenorSiteRow.isReadOnly() && specimenorSiteRow.getColType().getValue() == null)
                    return false;
            }
            else if (specimenorSiteRow.getColSpecimen() == null && specimenorSiteRow.getValue() != null
                    && Boolean.TRUE.equals(specimenorSiteRow.getValue().getInvestigation().getInvestigationIndex().getRequiresSiteSpecifier()))     // This Could be a site specifier investigation and collection type
            {
                collTypes.add((SpecimenCollectionType) specimenorSiteRow.getColType().getValue());

                if (!specimenorSiteRow.isReadOnly() && specimenorSiteRow.getColType().getValue() == null)
                    return false;
            }
            else if (specimenorSiteRow.getParentRow() != null)
            {
                collTypes.add((SpecimenCollectionType) specimenorSiteRow.getParentRow().getColType().getValue());

                if (specimenorSiteRow.getParentRow().getColType().getValue() == null)
                    return false;
            }
        }
        else if (specimenorSiteRow.getValue() == null && specimenorSiteRow.getParentRow() != null)
        {
            collTypes.add((SpecimenCollectionType) specimenorSiteRow.getParentRow().getColType().getValue());

            if (specimenorSiteRow.getParentRow().getColType().getValue() == null)
                return false;
        }
    }

    if (collTypes.size() == 0)
        return false;
    else
        return true;
}
项目:openMAXims    文件:Logic.java   
private boolean validateRequestedTests()
{
    if (form.lyrDetails().tabPathDetails().lyrPathology().tabRequestedTests().Grdtest().getRows().size() == 0)
        return true;

    SpecimenCollectionTypeCollection collTypes = new SpecimenCollectionTypeCollection();
    for (int i = 0; i < form.lyrDetails().tabPathDetails().lyrPathology().tabRequestedTests().Grdtest().getAllRows().length; i++)
    {
        GenForm.lyrDetailsLayer.tabPathDetailsContainer.lyrPathologyLayer.tabRequestedTestsContainer.GrdTestRow specimenorSiteRow = form.lyrDetails().tabPathDetails().lyrPathology().tabRequestedTests().Grdtest().getAllRows()[i];

        if (specimenorSiteRow.getValue() instanceof OrderInvestigationVo)
        {
            if (specimenorSiteRow.getColSpecimen() instanceof SpecimenVo)
            {
                collTypes.add((SpecimenCollectionType) specimenorSiteRow.getColType().getValue());

                if (!specimenorSiteRow.isReadOnly() && specimenorSiteRow.getColType().getValue() == null)
                    return false;
            }
            else if (specimenorSiteRow.getColSpecimen() == null && specimenorSiteRow.getValue() != null
                    && Boolean.TRUE.equals(specimenorSiteRow.getValue().getInvestigation().getInvestigationIndex().getRequiresSiteSpecifier()))     // This Could be a site specifier investigation and collection type
            {
                collTypes.add((SpecimenCollectionType) specimenorSiteRow.getColType().getValue());

                if (!specimenorSiteRow.isReadOnly() && specimenorSiteRow.getColType().getValue() == null)
                    return false;
            }
            else if (specimenorSiteRow.getParentRow() != null)
            {
                collTypes.add((SpecimenCollectionType) specimenorSiteRow.getParentRow().getColType().getValue());

                if (specimenorSiteRow.getParentRow().getColType().getValue() == null)
                    return false;
            }
        }
        else if (specimenorSiteRow.getValue() == null && specimenorSiteRow.getParentRow() != null)
        {
            collTypes.add((SpecimenCollectionType) specimenorSiteRow.getParentRow().getColType().getValue());

            if (specimenorSiteRow.getParentRow().getColType().getValue() == null)
                return false;
        }
    }

    if (collTypes.size() == 0)
        return false;
    else
        return true;
}
项目:openmaxims-linux    文件:Logic.java   
private boolean validateRequestedTests()
{
    if (form.lyrDetails().tabPathDetails().lyrPathology().tabRequestedTests().Grdtest().getRows().size() == 0)
        return true;

    SpecimenCollectionTypeCollection collTypes = new SpecimenCollectionTypeCollection();
    for (int i = 0; i < form.lyrDetails().tabPathDetails().lyrPathology().tabRequestedTests().Grdtest().getAllRows().length; i++)
    {
        GenForm.lyrDetailsLayer.tabPathDetailsContainer.lyrPathologyLayer.tabRequestedTestsContainer.GrdTestRow specimenorSiteRow = form.lyrDetails().tabPathDetails().lyrPathology().tabRequestedTests().Grdtest().getAllRows()[i];

        if (specimenorSiteRow.getValue() instanceof OrderInvestigationVo)
        {
            if (specimenorSiteRow.getColSpecimen() instanceof SpecimenVo)
            {
                collTypes.add((SpecimenCollectionType) specimenorSiteRow.getColType().getValue());

                if (!specimenorSiteRow.isReadOnly() && specimenorSiteRow.getColType().getValue() == null)
                    return false;
            }
            else if (specimenorSiteRow.getColSpecimen() == null && specimenorSiteRow.getValue() != null
                    && Boolean.TRUE.equals(specimenorSiteRow.getValue().getInvestigation().getInvestigationIndex().getRequiresSiteSpecifier()))     // This Could be a site specifier investigation and collection type
            {
                collTypes.add((SpecimenCollectionType) specimenorSiteRow.getColType().getValue());

                if (!specimenorSiteRow.isReadOnly() && specimenorSiteRow.getColType().getValue() == null)
                    return false;
            }
            else if (specimenorSiteRow.getParentRow() != null)
            {
                collTypes.add((SpecimenCollectionType) specimenorSiteRow.getParentRow().getColType().getValue());

                if (specimenorSiteRow.getParentRow().getColType().getValue() == null)
                    return false;
            }
        }
        else if (specimenorSiteRow.getValue() == null && specimenorSiteRow.getParentRow() != null)
        {
            collTypes.add((SpecimenCollectionType) specimenorSiteRow.getParentRow().getColType().getValue());

            if (specimenorSiteRow.getParentRow().getColType().getValue() == null)
                return false;
        }
    }

    if (collTypes.size() == 0)
        return false;
    else
        return true;
}

javascript - collection的create方法不能向collection中添加model

javascript - collection的create方法不能向collection中添加model

javascript - collection的create方法不能向collection中添加model

当184行的create方法第一次执行时,会触发152和153的事件;但是当create方法第二次执行时,就不会触发

立即学习“Java免费学习笔记(深入)”;

服务端用的是php+mysql

回复内容:

javascript - collection的create方法不能向collection中添加model

当184行的create方法第一次执行时,会触发152和153的事件;但是当create方法第二次执行时,就不会触发

立即学习“Java免费学习笔记(深入)”;

服务端用的是php+mysql

自己找到答案了,之前把model中的id属性设为0了。。。导致每次create都是update。。

JavaScript Collections API?

JavaScript Collections API?

我已经搜索了很长一段时间来获取JS的Collections API(列表,设置),令人惊讶的是我只能这样: http://www.coffeeblack.org/work/jscollections/

这正是我想要的,但我想知道为什么jQuery不能提供呢?我错过了什么?或者,也许,我的搜索技巧有多么无效?

我知道数组支持pop()和push(),但我需要contains().

解决方法

您可以尝试 js_cols,一个JavaScript的集合库.

今天的关于在 symfony 中添加 CollectionType 表单时如何维护 Javascript 功能的分享已经结束,谢谢您的关注,如果想了解更多关于angularjs – Angular TypeScript:$watchCollection,“controller as”的良好做法、ims.ocrr.vo.lookups.SpecimenCollectionTypeCollection的实例源码、javascript - collection的create方法不能向collection中添加model、JavaScript Collections API?的相关知识,请在本站进行查询。

本文标签: