不能将布尔值传递给带有 Angular 的指令
Cannot pass boolean to directive with Angular
我正在尝试将布尔值从我的控制器传递到我的隔离范围指令中。当我从指令的 link 函数console.log(attrs)
时,someBoolean
属性是一个字符串,呈现实际文本"main.bool"而不是真或假值。当我从外部控制器切换布尔值时,我希望它在指令中更新。
https://plnkr.co/edit/80cvLKhFvljnFL6g7fg9?p=preview
app.directive('myDirective', function() {
return {
restrict: 'E',
replace: true,
scope: {
someBoolean: '='
},
templateUrl: 'myDirective.html',
link: function(scope, element, attrs) {
console.log(scope);
console.log(attrs);
},
controller: function($scope, $element, $attrs) {
console.log(this);
},
controllerAs: 'directiveCtrl',
bindToController: true
};
});
控制器
app.controller('MainCtrl', function($scope) {
var vm = this;
vm.bool = true;
vm.change = function() {
vm.bool = !vm.bool;
}
});
模板
<div>
Inside directive: {{someBoolean}}
</div>
由于您已将指令控制器附加到directiveCtrl
而不是mainCtrl
,您将使用 directiveCtrl.someBoolean
访问变量someBoolean
。
在这种情况下,请将 HTML 更改为:
<div>
Inside directive: {{directiveCtrl.someBoolean}}
</div>
普朗克。
另一种解决方案是删除指令中的 bindToController
属性。这样,您无需在变量之前使用控制器名称。工作普伦克。
在此处阅读有关此bindToController
功能的更多信息。
相关文章:
- 将JSON对象传递给angular指令
- Angular指令在alertify setContent内容中不起作用
- 在其他javascript框架模板中运行angular指令
- 如何动态禁用Angular指令
- 在 Angular 指令中,如何进行回调,其中函数名称位于父范围的变量中
- Angular指令中的最佳实践是将文本输入设置为英尺和英寸的格式
- 不适用于动态数据的Angular指令来自$http
- 这段jquery代码在angular指令中不起作用
- Angular 指令似乎没有使用元素传入的选项执行
- 带有Angular指令的HTML;附加时无法工作
- 如何使用angular指令从html中获取数组
- 如何正确控制Angular指令的$dirty和$pure状态
- 在 Angular 指令中定义一个用于 ng-click 的函数
- HTML 标记在使用 Angular 指令时被视为纯文本
- 当 Angular 指令的名称真正重要时
- 如何将侦听器添加到 Angular 指令中
- 嵌套的Angular指令触发父对象上的作用域函数
- 在ui路由器中以Webpack块的形式懒惰地加载Angular指令
- 超链接;编译angular指令内的模板后无法工作
- 用angular指令构建嵌套树