Javascript 如何传递控制器';自定义指令的范围属性?
基本设置: 我有一个模态表单,里面有一个自定义指令(子元素)。自定义指令是一个按钮。模态还包括一个输入复选框 最终目标: 无论何时选中复选框,都应启用自定义指令/按钮元素。如果复选框为“未选中”,则应禁用自定义指令/按钮 到目前为止,我所拥有的就是我的思维过程: 在“modalController”中,我在复选框输入上放置了一个ng模型,以动态更改变量的值(isChecked)。选中输入时,它会将$scope.isChecked值设置为true;未选中输入时,$scope.isChecked为false 为了禁用按钮,我将把“isChecked”的值从modalController传递到自定义指令,该指令的值可以放在指令模板内按钮上的ng checked表达式中(见下文) 问题 当我尝试此解决方案时,控制台日志显示一个错误,显示“inputCheck未定义”。这会在页面加载后立即发生,因此在用户单击复选框之前,控制台日志就会打印出来。你有什么想法可以让它工作吗 模态html:Javascript 如何传递控制器';自定义指令的范围属性?,javascript,html,angularjs,checkbox,Javascript,Html,Angularjs,Checkbox,基本设置: 我有一个模态表单,里面有一个自定义指令(子元素)。自定义指令是一个按钮。模态还包括一个输入复选框 最终目标: 无论何时选中复选框,都应启用自定义指令/按钮元素。如果复选框为“未选中”,则应禁用自定义指令/按钮 到目前为止,我所拥有的就是我的思维过程: 在“modalController”中,我在复选框输入上放置了一个ng模型,以动态更改变量的值(isChecked)。选中输入时,它会将$scope.isChecked值设置为true;未选中输入时,$scope.isChecked为f
<div ng-controller= "modalController">
<input type="checkbox" ng-model="isChecked">
<button-directive inputCheck="isChecked"></button-directive>
</div>
button-directive.html:
<button ng-checked="inputCheck">
你做错了$范围变量与该指令范围声明不同 每个孩子,包括指令,都在$scope范围内,明白吗 因此,您的指令声明不需要该范围,请删除它
angular.module('starter').directive('buttonDirective', function ($uibModal) {
return {
restrict: "EA",
templateUrl: "app/directives/button-directive.html"
};
});
和您的模态,无需传递inputCheck属性
<div ng-controller= "modalController">
<input type="checkbox" ng-model="isChecked">
<button-directive></button-directive>
</div>
然后你的指令变成html
<button ng-checked="isChecked">
看到这个了吗
像你那样工作 您传递的属性是错误的,angularjs有一个不好的地方,那就是当您将值传递给像inputCheck这样的指令时,您必须使用hiphen编写它,所以它需要是
input check
<button-directive input-check="isChecked"></button-directive>
您应该进行以下更改:
<button-directive input-check="isChecked"></button-directive>
scope: {
inputCheck: "="
}
<button ng-disabled="inputCheck">
范围:{
输入检查:“=”
}
$scope.inputCheck有效吗?不,它只是说它没有定义。我可以理解为什么否决票?那不是我。谢谢你的回复。即使它是一个子元素,自定义指令也会自动成为一个隔离范围。我必须声明“范围:真”吗?@Kode_12不,你不需要。让我们试着让你的方式发挥作用。我会给你另一个答案。@Kode_12看看我在这个回答中贴的那封信,看起来不错。我只是不知道为什么在我的代码中这不起作用。让我试着复制一下,几个小时后我会给你更新的。@Kode_12你能帮我做一下吗?或者是我所希望的,我不能为客户分享我的代码reasons@Kode_12我明白了。哇,总是那些小错误很容易被忽视!谢谢,现在一切正常:)
scope: {
inputCheck: "="
},
<button-directive input-check="isChecked"></button-directive>
scope: {
inputCheck: "="
}
<button ng-disabled="inputCheck">