javascript - 将范围名称更新为指令

标签 javascript angularjs angularjs-directive

我有一个指令,该指令的属性包含一个范围名称,当指令中设置了某些内容时,我想更新该范围名称。

<div data-my-directive data-scope-var-to-update="my_scope_variable"></div>



.directive('myDirective', function($rootScope){
        return function(scope, element, attrs){

            var scope_var_name = attrs.scopeVarToUpdate;

            scope[scope_var_name] = 'This message was updated from the directive';
        }
    })

仅当范围变量不包含任何点符号时,上面的内容才允许我做我想做的事情。

我的问题是如何修改上述内容以适应包含点符号的范围变量,例如 $scope.a.b?

<div data-my-directive data-scope-var-to-update="a.b"></div>

上述背后的想法是传入任何作用域变量名称,并在完成工作后从指令中更新它,这意味着父 Controller 应该可以访问新的分配。

最佳答案

您需要使用 $parse 服务来实现点表示法模型。您的指令中有类似的内容

var getter = $parse(parseattrs.scopeVarToUpdate);
var setter = getter.assign;
getter(scope);   //get value
setter(scope,'value'); //set value

请参阅此处的文档 http://docs.angularjs.org/api/ng .$解析

关于javascript - 将范围名称更新为指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19009238/

相关文章:

javascript - 使用 Angular 创建一个条目表单

javascript - 语法错误 : Unexpected token `<` -- AngularJS Application is not working

angularjs - 如何在 AWS 上运行 Protractor 来验证 CHROME

javascript - AngularJS:将 XML 字符串加载到 XML 文档

javascript - AngularJS 在 Controller 中注入(inject)模块

javascript - 打开包含多个目的地或航点的 Google map (或替代方案)导航

javascript - 我是否正确更新了 React 状态?

javascript - 如何在 select.options.add(new Option()) 之后添加 2 个属性

angularjs - 为什么双向绑定(bind)有时可以在不使用 Angular 中的点的情况下工作?

angularjs - 在 angularjs 指令中将优先级设置为高于 '0' 可防止包含