Angular JS指令,在链接函数中更改2种方式的数据绑定

詹姆斯·冈特

我正在尝试创建一个角度指令,可以在其中通过单个选项对象或某些属性来设置选项。这是这种代码的示例:

app.directive('testElement', [function () {
    return {
        restrict: "E",
        scope: {
            options: "="
        },
        template: "<p><span>Name: </span>{{ options.name }}</p>",
        link: function (scope, element, attrs) {
            scope.options = scope.options || {};
            if (attrs.name)
                scope.options.name = attrs.name;
        }
    };
}]);

这很好用,因为如果我通过options属性传递名称,则显示名称值。但是,如果我通过name属性传递名称,即使链接功能确实修改了选项,该值也不会呈现。

http://plnkr.co/edit/IMVZRdAW2a5HvSq2WtgT?p=preview

我觉得我在选项的数据绑定的两种方式中缺少一些基本知识。

帕特里克

如果您不通过两种方式进行数据绑定,则angular会很生气:

https://github.com/angular/angular.js/issues/1435

使用可选的绑定(=?):

app.directive('testElement', [function () {
    return {
        restrict: "E",
        scope: {
            options: "=?"
        },
        template: "<p><span>Name: </span>{{ options.name }}{{ test }}</p>",
        link: function (scope, element, attrs) {
            scope.options = scope.options || {};
            if (attrs.name)
                scope.options.name = attrs.name;
        }
    };
}]);

或者,如果您使用的是angular的旧版本,请在attrs上使用$ eval。选项:

app.directive('testElement', [function () {
    return {
        restrict: "E",
        //Still can create isolate scope to not clobber parent scope variables.
        scope: {},
        template: "<p><span>Name: </span>{{ options.name }}{{ test }}</p>",
        link: function (scope, element, attrs) {
            scope.options = scope.$eval(attrs.options) || {};
            if (attrs.name)
                scope.options.name = attrs.name;
        }
    };
}]);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

angular js中的两种方式数据绑定

Angular指令两种方式数据绑定失败

Angular.js指令与加载数据的两种方式绑定

Angular:子组件中自定义输入的2种方式的数据绑定

使用指令动态更改Angular JS中的模型绑定?

Angular JS:指令以更改html块中的所有链接

Angular JS-指令中的数据绑定不起作用

Angular JS指令模型更改未反映在函数中

指令链接函数 angularjs 中的两种方式数据绑定不起作用

Angular2:2种方式绑定不更新下划线数据

Angular JS:如何在Angular指令中从控制器的链接内部调用函数

Angular2-组件变量/组件类属性上的两种方式数据绑定?

$ watch'ing Angular指令中的数据更改

Angular 2:无法通过两种方式绑定在自定义组件中工作

Angular 2两种方式绑定从html输入标签中删除名称属性

Angular5服务之间的2种方式绑定

Angular中JSON映射的两种方式绑定

如何在指令Angular js的链接函数中确定变量的初始化顺序

Angular.JS,指令模板中的数据绑定当表单验证检查时

如何从链接函数中检查Angular指令中的作用域?

Angular JS数据绑定

Angular2。将数据从指令绑定到模板

angular 2 服务扩展:更改函数中的数据类型

Angular2中的一种方法数据绑定

两种形式的数据绑定在Angular 2中不起作用

angular2绑定中的数学函数

对象中的Angular 2数据绑定

在Angular 2中绑定数据

Angular指令的链接函数未调用