当前位置: 首页 > 面试题库 >

AngularJs将复杂数据传递给指令

仲孙超
2023-03-14
问题内容

我有以下指令:

<div teamspeak details="{{data.details}}"></div>

这是对象结构:

data: {
                details: {
                    serverName: { type: 'text', value: 'my server name' },
                    port: { type: 'number', value: 'my port' },
                    nickname: { type: 'text' },
                    password: { type: 'password' },
                    channel: { type: 'text' },
                    channelPassword: { type: 'password' },
                    autoBookmarkAdd: { type: 'checkbox' }
                }
}

我希望它根据data.details对象内部的数据生成一个链接。
不幸的是,由于我无法访问该details对象的任何内部值,因此它不起作用,但是如果我将其传递给一个简单的数据结构,例如:

<div teamspeak details="{{data.details.serverName.value}}"></div>

我可以使用访问它{{details}}

这是我的指令代码:

App.directive('teamspeak', function () {
    return {
        restrict: 'A',
        template: "<a href='ts3server://{{details.serverName.value}}:{{details.port.value}}'>Teamspeak Server</a>",
        scope: {
            details: '@details',
        },
        link: function (scope, element, attrs) {
        }
    };
});

谢谢


问题答案:

在Angularjs官方网站上阅读说明:

@或@attr-
将本地范围属性绑定到DOM属性的值。由于DOM属性是字符串,因此结果始终是字符串。如果未指定attr名称,则假定属性名称与本地名称相同。给定范围的小部件定义:{localName:’@
myAttr’},则小部件范围属性localName将反映您好{{name}}的插值。随着name属性的更改,小部件作用域上的localName属性也会更改。名称是从父范围(不是组件范围)读取的。

因此,您只能发送一个字符串以传递对象,您需要使用设置双向绑定=

   scope: {
        details: '=',
    },

您的HTML看起来像

<div teamspeak details="data.details"></div>


 类似资料:
  • 问题内容: 我想知道是否有一种方法可以将参数传递给指令? 我想做的是从控制器添加一个指令,如下所示: 是否可以同时传递一个参数,以便我的指令模板的内容可以链接到一个作用域或另一个作用域? 这是指令: 如果我想使用相同的指令但使用$ scope.title2怎么办? 问题答案: 这是我解决问题的方法: 指示 控制者 现在,我可以通过同一指令使用不同的作用域,并动态附加它们。

  • 问题内容: 这里有角的新手。我试图找出将对象传递给指令时出了什么问题。 这是我的指令: 这是我调用指令的模板: 是一组对象。 当我运行此,日志,而日志罚款的范围,甚至有一个与所有的数据,我找孩子。 我不确定我在这里做错了什么,因为这种确切的方法以前对我有用。 编辑: 我已经用所有必需的代码创建了一个插件:http ://plnkr.co/edit/uJCxrG 如您所见,该作用域在范围中可用,但我

  • 问题内容: 看看这个小提琴,我必须更改什么,才能使用我在HTML中定义的参数来评估模板中的表达式?因为我通过了SAVE按钮,所以它应该调用控制器的- function? 我看不出来。感谢帮助! 问题答案: 您可以按照Roy的建议设置两种方式的数据绑定。因此,如果您既想要又绑定到本地范围,则可以 由于要传递这些值,因此可以在指令的控制器中访问它们。但是,如果您想在父作用域的上下文中运行一个函数,这似

  • 问题内容: 通过指令的属性将数组传递给指令时,我目前遇到问题。我可以将其读取为字符串,但是我需要将其作为数组,所以这是我想出的,但是不起作用。帮助任何人?提前 Javascript :: HTML :: 问题答案: 如果要从您的作用域访问此数组,即加载到控制器中,则只需传递变量名称即可: 指示: 模板:

  • 的语法是 获取(url,配置)

  • 根据本指南,我能够将简单数据类型(如)的关联数组传递给PL/SQL过程。 可以这么说: 但是,我想调用下面的过程,取而代之的是复杂类型。 我尝试过各种方法,比如: 以下是失败的: 看起来您可以在包之外创建一个类型并引用它。 引用它: 但是,您不允许在包之外创建关联数组的RECORD。我可以用对象替换RECORD,但是我想不出任何东西可以替换关联数组,这是cx_Oracle可以传入或传出的唯一集合类