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

如何在角度指令中设置插值?

左华灿
2023-03-14
问题内容

如何在指令中设置插值?我可以从以下代码中读取正确的值,但无法设置它。

js:

app.directive('ngMyDirective', function () {
    return function(scope, element, attrs) {
        console.log(scope.$eval(attrs.ngMyDirective));

        //set the interpolated attrs.ngMyDirective value somehow!!!
    }
});

HTML:

<div ng-my-directive="myscopevalue"></div>

myscopevalue我的控制器范围内的值在哪里?


问题答案:

如果要在范围上设置值,但不知道属性名称(提前),则可以使用以下object[property]语法:

scope[attrs.myNgDirective] = 'newValue';

如果属性中的字符串包含点(例如myObject.myProperty),则将无法使用;您可以用来$eval做作业:

// like calling  "myscopevalue = 'newValue'"
scope.$eval(attrs.myNgDirective + " = 'newValue'");

如果使用隔离范围,则可以使用=批注:

app.directive('ngMyDirective', function () {
    return {
        scope: {
            theValue: '=ngMyDirective'
        },
        link: function(scope, element, attrs) {
            // will automatically change parent scope value
            // associated by the variable name given to `attrs.ngMyDirective`
            scope.theValue = 'newValue';
        }
    }
});

您可以在此Angular /jQuery颜色选择器JSFiddle示例中看到一个示例,其中scope.color在指令内部分配会自动在控制器的作用域上更新传递_到_ 指令的变量。



 类似资料:
  • > 我正在使用OWASP CSRFGuard 3.0保护这些Restful服务不受CSRF的影响。 当使用简单的超文本标记语言访问相同的Rest服务时-AJAX请求-CSRF令牌正在设置,我得到了响应: 下面的代码工作正常。 角度代码(我对角度代码非常陌生) 有人能建议我如何设置角形标记吗。 引自: 在寻找此问题的解决方案时,请阅读以下语句。 跨站请求伪造(XSRF)保护XSRF是一种技术,通过这

  • 问题内容: 我创建了下面的角度指令, ChildDirective ,在 ParentDirective中使用 这正常工作,并且出现了几个子指令。 我想更新 ParentDirective ,以从服务器获取 childDirective 的列表。因此,我更新了 ParentDirective 代码以进行Ajax调用,然后绘制 ChildDirectives 问题是, childDirectives

  • 问题内容: 我在ng-repeater内部有一条指令,应该设置一个scope属性。请在此处查看小提琴:http: //jsfiddle.net/paos/CSbRB/ 问题是范围属性是作为属性值给出的,如下所示: 该指令应该将范围属性inputdata.title设置为某些字符串。这不起作用: 但是,直接分配有效: 您能告诉我如何使用来设置作用域属性吗?指令名称中的符号? PS:提琴使用中继器的原

  • 问题内容: 有没有一种方法可以在指令内部设置输入有效性?指令模板中存在的输入。 可以说我有模板: 我的指令就像: 我不能用表单包装它,因为其背后的思想是允许用户将此输入包含在用户的表单中。 问题答案: 您需要检索与输入关联的NgModelController实例。然后调用此对象,指定验证密钥(必需,最小长度,自定义密钥等)。它看起来像这样: 这里最重要的部分是如何获取NgModelControll

  • 问题内容: 我正在尝试使用Angular的“装饰器”功能向某些指令添加功能。假设我的指令名称是myDirective。我的代码如下所示: ]); 我不断收到此消息: 尽我所能,指令在装饰器函数运行时已被注册。任何见识将不胜感激! 问题答案: 本文说明了实际上如何将带指令的decorator()使用。 您只需将“指令”作为名称的后缀即可。因此,在我的示例中,我应该一直在做 http://angula

  • 问题内容: 我想对第3方指令(特别是Angular UI Bootstrap)进行较小的修改。我只是想添加指令的范围: 但是我也想让Bower与Angular-Bootstrap保持同步。运行后,我将覆盖所做的更改。 那么,如何与该Bower组件分开扩展该指令? 问题答案: 解决此问题的最简单方法可能是在您的应用上创建与第三方指令同名的指令。这两个指令都将运行,并且您可以使用属性指定运行顺序(优先