我正在为角度1.5风格的组件重构一些角度指令.
我的一些指令具有依赖于某个属性存在的行为,因此没有该属性具有特定的布尔值.使用我的指令,我使用链接功能完成此操作:
link: function(scope,elem,attrs,controller){ controller.sortable = attrs.hasOwnProperty('sortable'); },
我如何使用角度1.5样式的组件语法?
我能做的一件事就是添加一个绑定,但是我需要指定一个布尔值.我想按原样保留我的模板.
使用绑定而不是直接引用DOM属性:
angular.module('example').component('exampleComponent',{ bindings: { sortable: '<' },controller: function() { var vm = this; var isSortable = vm.sortable; },templateUrl: 'your-template.html' });
模板:
<example-component sortable="true"></example-component>
使用单向绑定(由’<'表示)控制器实例上的变量'sortable'的值(此处为视图模型命名为vm)将是布尔值true,如果设置如示例所示.如果您的sortable属性当前在模板中包含一个字符串,那么'@'绑定也可能是一个合适的选择.在这种情况下,vm.sortable的值将是一个字符串(如果在组件标记上未定义属性,则为undefined). 检查仅仅存在可排序属性的方式如下:
bindings: { sortable: '@' } // within the controller: var isSortable = vm.sortable !== undefined;