如何在 ng-click 中调用 json 数组?

Posted

技术标签:

【中文标题】如何在 ng-click 中调用 json 数组?【英文标题】:How to call json array in ng-click? 【发布时间】:2017-09-29 19:25:07 【问题描述】:

我想在单击按钮时调用 json 数组。我想列出按钮单击的详细信息。

这是格式

$scope.menuOptions = [
       ['New Folder', function ($itemScope) 
        ],
        null,
        ['Copy', function ($itemScope) 

        ],

        ['Paste', function ($itemScope) 

        ],
        ['Delete', function ($itemScope) 



        ]
    ];

我想要这样的东西,

$scope.accc = function() 
$scope.menuOptions();
 

调用上面的json。我是角度 js 的新手。请帮帮我。我不知道这是不是一个有效的问题。

【问题讨论】:

“调用JSON数组”是什么意思? 上面的 json 将在鼠标右键单击时调用,我希望在按钮单击时相同 @stark 您需要打印“新文件夹”、“复制”等,对吗?按钮点击 我想调用 $scope.menuOptions 来获取菜单列表 是的,我想打印 【参考方案1】:

试试这个:

$scope.callItem = function(itemName, arguments) 
    for (let itemID in $scope.menuOptions) 
        var item = $scope.menuOptions[itemID];
      if (!!item) 
        if (item[0] == itemName) 
                item[1].apply(this, arguments);
            break;
        
      
  


$scope.callItem('Copy');

在 Angular 中你喜欢这样:

<ul>
    <li ng-repeat="item in menuOptions" ng-click="item[1]()">
        item[0]
    </li>
</ul>

或者像这样:

 <ul>
    <li ng-repeat="item in menuOptions" ng-click="callItem(item[0])">
        item[0]
    </li>
</ul>

我建议您使用另一种基于对象而不是数组的数据结构。比如这样:

$scope.menuOptions = 
       'New Folder' : function() ,
        'Copy' : function() 

【讨论】:

我可以直接打电话吗? 要直接从角度调用它,您需要将其添加到网站范围中【参考方案2】:

您需要稍微调整一下 JSON,您可以将“新建文件夹”设置为对象键而不是数组。看下面的例子:

/* javascript: */
$scope.menuOptions = 
    'New Folder': function ($itemScope) 
        console.log('New Folder Created',$itemScope)
    ,
    'Copy': function ($itemScope) ,
    'Paste': function ($itemScope) ,
    'Delete': function ($itemScope) 
;

$scope.clickedMe = function(action_name,value)
    menuOptions[action_name](value);

并在你的 html 模板中使用它

/* HTML: */
<button ng-click="clickedMe('New Folder',myelement)">New Folder</button>
<button ng-click="clickedMe('Copy',myelement)">Copy</button>
<button ng-click="clickedMe('Paste',myelement)">Paste</button>
<button ng-click="clickedMe('Delete',myelement)">Delete</button>

使用 NG-REPEAT 渲染按钮:

<button ng-repeat="(key,value) in menuOptions" ng-click="clickedMe(key,other_elem_here)">
    key
</button>

【讨论】:

不...只有一个按钮,当我点击时,我想在菜单栏中显示 arry 这种方式是通用的,您可以随心所欲地显示它。当你创建时使用我刚刚发布的编辑。【参考方案3】:

菜单对象数组如下:

 $scope.menuOptions = [
           
                label:'New Folder', 
                action:function ($itemScope) 
                   alert('New Folder');
                //End of function
            ,
            
                label:'Copy', 
                action:function ($itemScope) 
                    //function body
                    alert('Copy Copy');
                //End of function
            ,
            
                label:'Paste', 
                action:function ($itemScope) 
                //function body
                alert('Paste');
                //End of function
             ,
            
                label:'Delete', 
                action:function ($itemScope) 
                    //function body
                    alert('Delete');
                //End of function
            
        ];

用户界面:

<ul>
    <li ng-repeat="item in menuOptions" ng-click="item.action()">
        item.label
    </li>
</ul>

在按钮点击时触发 ng-repeat 之外的任何功能:

//that will triger 'New folder' function
<button ng-click="menuOptions[0].action">menuOptions[0].label</button>

【讨论】:

我只想在按钮点击时触发

以上是关于如何在 ng-click 中调用 json 数组?的主要内容,如果未能解决你的问题,请参考以下文章

在 ng-repeat 中为 ng-click 查找范围

当浏览器导航回来时,将调用嵌套在ng-click侦听器内的$ interval

如何在 REACT JS API 调用中迭代 JSON 嵌套数组?

angular.js传递选择到ng-click功能

如何通过 ajax php 调用返回包含 json 对象的数组/json 对象?

PHP 如何从 AJAX 调用中发布多个数组/json 值并在同一个 SQL 查询中运行它们?