angularjs - 如何在 Angular 指令中绑定(bind) bool 值?

标签 angularjs angularjs-directive angularjs-scope

我想将一些 bool 属性绑定(bind)/设置到指令。但我真的不知道如何做到这一点并实现以下行为。

想象一下,我想为一个结构设置一个标志,假设一个列表是否可折叠。我有以下 HTML 代码:

<list items="list.items" name="My list" collapsable="true"></list>
items是双向绑定(bind)的,name只是一个属性

我想要 collapsable属性在列表的 $scope 中可用,方法是传递一个值(true、false 或其他),或者双向绑定(bind)
<list items="list.items" name="{{list.name}}" collapsable="list.collapsed"></list>

我正在开发一些 UI 组件,我想提供多种与它们交互的方式。也许,随着时间的推移,有些人想通过将对象的属性传递给属性来了解该组件的状态,无论是折叠还是未折叠。

有没有办法做到这一点?如果我误解了什么或我错了,请纠正我。

谢谢

最佳答案

您可以为 bool 值配置自己的单向数据绑定(bind)行为,如下所示:

link: function(scope, element, attrs) {

    attrs.$observe('collapsable', function() {

        scope.collapsable = scope.$eval(attrs.collabsable);
    });

}

在此处使用 $observe 意味着您的“监视”仅受属性更改的影响,如果您直接更改指令中的 $scope.collapsable 则不会受到影响。

关于angularjs - 如何在 Angular 指令中绑定(bind) bool 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18014471/

相关文章:

javascript - 如何将 plunker 连接到本地 Node.js 服务器?

javascript - Gulp 任务合并 Javascript 和框架

javascript - ng-model 没有因 select 中的选择更改而更新

javascript - 如何在 Angularjs 中使用 Dropzone 显示已存储在服务器上的文件

AngularJS 多指令资源争用

javascript - AngularJS 范围变量不会在具有隔离范围的指令中持续存在

angularjs - 以声明方式编写 *wrapper* 指令 AngularJS

javascript - 洗牌后恢复到原始数组顺序

javascript - Angularjs - 范围的变化没有反射(reflect)出来

javascript - 如何在AngularJS中将一个 Controller 的值传递给另一个 Controller ?