Javascript AngularJS单击可编辑下拉列表等字段

Javascript AngularJS单击可编辑下拉列表等字段,javascript,html,angularjs,Javascript,Html,Angularjs,我偶然发现了如何为表单构建点击编辑功能。提交人说: 如果您想要输入类型=日期,甚至是选择,该怎么办?这 在这里,您可以将一些额外的属性名称添加到指令的 范围,如fieldType,然后更改模板中的某些元素 基于该值。或者完全定制,你甚至可以 off replace:true并添加一个编译函数来封装必要的 单击以编辑页面中任何现有内容周围的标记 在浏览代码时,我似乎无法理解如何操作模板,使其应用于任何角度组件,更不用说如何将其应用于下拉列表。以下第条中的代码: app.directive(

我偶然发现了如何为表单构建点击编辑功能。提交人说:

如果您想要输入类型=日期,甚至是选择,该怎么办?这 在这里,您可以将一些额外的属性名称添加到指令的 范围,如fieldType,然后更改模板中的某些元素 基于该值。或者完全定制,你甚至可以 off replace:true并添加一个编译函数来封装必要的 单击以编辑页面中任何现有内容周围的标记

在浏览代码时,我似乎无法理解如何操作模板,使其应用于任何角度组件,更不用说如何将其应用于下拉列表。以下第条中的代码:

    app.directive("clickToEdit", function() {
    var editorTemplate = '<div class="click-to-edit">' +
        '<div ng-hide="view.editorEnabled">' +
            '{{value}} ' +
            '<a ng-click="enableEditor()">Edit</a>' +
        '</div>' +
        '<div ng-show="view.editorEnabled">' +
            '<input ng-model="view.editableValue">' +
            '<a href="#" ng-click="save()">Save</a>' +
            ' or ' +
            '<a ng-click="disableEditor()">cancel</a>.' +
        '</div>' +
    '</div>';

    return {
        restrict: "A",
        replace: true,
        template: editorTemplate,
        scope: {
            value: "=clickToEdit",
        },
        controller: function($scope) {
            $scope.view = {
                editableValue: $scope.value,
                editorEnabled: false
            };

            $scope.enableEditor = function() {
                $scope.view.editorEnabled = true;
                $scope.view.editableValue = $scope.value;
            };

            $scope.disableEditor = function() {
                $scope.view.editorEnabled = false;
            };

            $scope.save = function() {
                $scope.value = $scope.view.editableValue;
                $scope.disableEditor();
            };
        }
    };
});

我的问题是,我们如何扩展上述代码以允许下拉编辑?这是可以更改为所选择的值的。

< P>一种方法,你可以考虑使用模板:函数TeleMeToTr.< /P> 这将允许您根据属性返回适当的模板

app.directive("clickToEdit", function() {
      return {
       /* pseudo example*/
        template: function(tElement,tAttrs ){
             switch( tAttrs.type){
                 case 'text':
                    return '<input type="text"/>';
                 break;
             }
        },....

这是在

中概述的,你能提供指令的剩余代码吗?@ JoaahanPalunBo代码有趣,是收音机,我想考虑一个下拉列表的case语句吗?就我个人而言,我会使用select,因为这是我在查看文档时使用的标记问题,它基于左侧的菜单输入[xxx],您还可以将模板存储在$templateCache中,并使用templateUrl:函数选择您想要的模板。指令非常强大,可以通过多种方式进行定制。因此,在我的示例中,我将保持一切不变,但添加模板:并找出任何其他样式?我这样问是因为我认为这不仅仅是:case select:return';