如何在指令中设置插值?我可以从以下代码中读取正确的值,但无法设置它。
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我的控制器范围内的值在哪里?
myscopevalue
如果要在范围上设置值,但不知道属性名称(提前),则可以使用以下object[property]语法:
object[property]
scope[attrs.myNgDirective] = 'newValue';
如果属性中的字符串包含点(例如myObject.myProperty),则将无法使用;您可以用来$eval做作业:
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在指令内部分配会自动在控制器的作用域上更新传递_到_ 指令的变量。
scope.color