一尘不染

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

angularjs

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

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我的控制器范围内的值在哪里?


阅读 324

收藏
2020-07-04

共1个答案

一尘不染

如果要在范围上设置值,但不知道属性名称(提前),则可以使用以下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在指令内部分配会自动在控制器的作用域上更新传递_到_ 指令的变量。

2020-07-04