从服务器端获取选择属性值,并使用Angular下拉列表

用户名

我从服务器端生成了一个select下拉列表,因此无法将其更改为使用javascript或array或ng-select。我想将选择的属性转换为javascript对象。

<select ng-model="selectedVal" ng-change="selectVal()">
    <option value="val1" attr1="attr11val" attr2="attr12val" cp-option="allObjs">opt1</option>
    <option value="val2" attr1="attr21val" attr2="attr22val" cp-option="allObjs" selected>opt2</option>
    <option value="val3" attr1="attr31val" attr2="attr32val" cp-option="allObjs">opt3</option>
</select>

我希望“ selectedVal”看起来像这样:

{"value":"val2","attr1":"attr21val","attr2":"attr22val"}

我能想到的最好的解决方案是在每个选项中添加一条指令,以获取属性并将其推入对象数组。然后,我可以在选择下拉菜单上使用ng-change。然后根据选择的值在数组上获取选择的对象。

有一个更好的方法吗?

这里的指令看起来像:

app.directive('cpOption', function () {
function link(scope, elem, attr) {
    var obj = {};
    for (var property in attr.$attr) {
        if (attr.hasOwnProperty(property)) 
            obj[property] = attr[property];
    }
    scope.cpOption.push(obj);
}

return {
    restrict: 'A',
    link: link,
    scope: {
        cpOption: '=cpOption'
    }
}
});

和控制器

app.controller('myCtrl', function ($scope) {
$scope.allObjs = [];
$scope.selectedVal = {};
$scope.selecteObj = {};

$scope.selectVal = function () {
    for (var val in $scope.allObjs) {
        if ($scope.allObjs[val].value === $scope.selectedVal) {
            $scope.selecteObj = $scope.allObjs[val];
            break;
        }
    }
}
});

还有更好的方法可以做到这一点吗?理想情况下,我不需要包含所有对象的数组,而只需要选定的对象。

jsfiddle:http : //jsfiddle.net/ocLrt7vp/7/

用户名

这对我有用。我创建了一个获取更改值的指令。然后将属性转换为对象。

app.directive('cpSelectAttrs', function () {

function link(scope, elem) {
    elem.bind('change', function () {
       getSelectionAttrs(scope, elem);
       scope.$apply();
    });

    getSelectionAttrs(scope, elem);
}

function getSelectionAttrs(scope, elem){
        var obj = {};
        var attrs = (elem[0].selectedOptions[0].attributes);
        var length = attrs.length;
        obj.text = elem[0].selectedOptions[0].text;
        for (var i = 0; i < length; i++) {
            obj[attrs[i].localName] = attrs[i].value;
        }
        scope.cpSelectAttrs = obj;
}

return {
    restrict: 'A',
    link: link,
    scope: {
        cpSelectAttrs: '=cpSelectAttrs'
    }
}
});

jsFiddle:http : //jsfiddle.net/yzLx6x7d/3/

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从服务器端添加下拉列表

来自分类Dev

从 PHP 服务器端脚本获取 JSON 数据并显示在下拉列表中

来自分类Dev

闪亮:在服务器端获取基础无功值

来自分类Dev

jQuery选择了多个选择,如何在asp.net中获取选择值服务器端?

来自分类Dev

使用Bootstrap multiselect时如何在服务器端获取选定的值?

来自分类Dev

使用异步数据获取的服务器端渲染

来自分类Dev

Javascript最佳做法-使用服务器端值

来自分类Dev

如何使用Angular 2服务器端渲染

来自分类Dev

使用Angular Material处理服务器端错误

来自分类Dev

使用Ajax调用.net,C#获取客户端的服务器端字符串值

来自分类Dev

下拉列表javascript验证失败后,停止C#进入服务器端脚本

来自分类Dev

服务器端和客户端下拉列表

来自分类Dev

使用 angular 等框架时服务器上服务器端脚本的文件结构

来自分类Dev

如何在异步(服务器端)ngTable上使用具有静态值的选择过滤器

来自分类Dev

如何使用服务器端C#在客户端更改表单属性

来自分类Dev

在更改服务器端值/文本之后,从文本框中获取文本/值

来自分类Dev

为什么使用Primefaces选择器在服务器端具有更好的性能?

来自分类Dev

Thymeleaf用服务器端的值替换属性变量

来自分类Dev

服务器端渲染以进行特定选择

来自分类Dev

在服务器端缓存选择查询数据

来自分类Dev

从数据表服务器端获取隐藏的嵌套数据值

来自分类Dev

Blazor服务器端如何获取clicked元素的值

来自分类Dev

Blazor服务器端-初始化期间是否可以获取Cookie值?

来自分类Dev

使用Ajax / JQuery填充下拉列表,想动态更改UI,而无需另一个服务器端调用

来自分类Dev

设置ASP.NET Button属性客户端和读取属性值服务器端

来自分类Dev

使用服务器端Asp项填充SweetAlert2 HTML选择输入项

来自分类Dev

angular 2.0是否在服务器端存储变量的值?

来自分类Dev

在服务器端获取android应用的类别

来自分类Dev

流星-从收集服务器端获取价值

Related 相关文章

  1. 1

    从服务器端添加下拉列表

  2. 2

    从 PHP 服务器端脚本获取 JSON 数据并显示在下拉列表中

  3. 3

    闪亮:在服务器端获取基础无功值

  4. 4

    jQuery选择了多个选择,如何在asp.net中获取选择值服务器端?

  5. 5

    使用Bootstrap multiselect时如何在服务器端获取选定的值?

  6. 6

    使用异步数据获取的服务器端渲染

  7. 7

    Javascript最佳做法-使用服务器端值

  8. 8

    如何使用Angular 2服务器端渲染

  9. 9

    使用Angular Material处理服务器端错误

  10. 10

    使用Ajax调用.net,C#获取客户端的服务器端字符串值

  11. 11

    下拉列表javascript验证失败后,停止C#进入服务器端脚本

  12. 12

    服务器端和客户端下拉列表

  13. 13

    使用 angular 等框架时服务器上服务器端脚本的文件结构

  14. 14

    如何在异步(服务器端)ngTable上使用具有静态值的选择过滤器

  15. 15

    如何使用服务器端C#在客户端更改表单属性

  16. 16

    在更改服务器端值/文本之后,从文本框中获取文本/值

  17. 17

    为什么使用Primefaces选择器在服务器端具有更好的性能?

  18. 18

    Thymeleaf用服务器端的值替换属性变量

  19. 19

    服务器端渲染以进行特定选择

  20. 20

    在服务器端缓存选择查询数据

  21. 21

    从数据表服务器端获取隐藏的嵌套数据值

  22. 22

    Blazor服务器端如何获取clicked元素的值

  23. 23

    Blazor服务器端-初始化期间是否可以获取Cookie值?

  24. 24

    使用Ajax / JQuery填充下拉列表,想动态更改UI,而无需另一个服务器端调用

  25. 25

    设置ASP.NET Button属性客户端和读取属性值服务器端

  26. 26

    使用服务器端Asp项填充SweetAlert2 HTML选择输入项

  27. 27

    angular 2.0是否在服务器端存储变量的值?

  28. 28

    在服务器端获取android应用的类别

  29. 29

    流星-从收集服务器端获取价值

热门标签

归档