Javascript 如何传递控制器';自定义指令的范围属性?

Javascript 如何传递控制器';自定义指令的范围属性?,javascript,html,angularjs,checkbox,Javascript,Html,Angularjs,Checkbox,基本设置: 我有一个模态表单,里面有一个自定义指令(子元素)。自定义指令是一个按钮。模态还包括一个输入复选框 最终目标: 无论何时选中复选框,都应启用自定义指令/按钮元素。如果复选框为“未选中”,则应禁用自定义指令/按钮 到目前为止,我所拥有的就是我的思维过程: 在“modalController”中,我在复选框输入上放置了一个ng模型,以动态更改变量的值(isChecked)。选中输入时,它会将$scope.isChecked值设置为true;未选中输入时,$scope.isChecked为f

基本设置:

我有一个模态表单,里面有一个自定义指令(子元素)。自定义指令是一个按钮。模态还包括一个输入复选框

最终目标:

无论何时选中复选框,都应启用自定义指令/按钮元素。如果复选框为“未选中”,则应禁用自定义指令/按钮

到目前为止,我所拥有的就是我的思维过程:

在“modalController”中,我在复选框输入上放置了一个ng模型,以动态更改变量的值(isChecked)。选中输入时,它会将$scope.isChecked值设置为true;未选中输入时,$scope.isChecked为false

为了禁用按钮,我将把“isChecked”的值从modalController传递到自定义指令,该指令的值可以放在指令模板内按钮上的ng checked表达式中(见下文)

问题

当我尝试此解决方案时,控制台日志显示一个错误,显示“inputCheck未定义”。这会在页面加载后立即发生,因此在用户单击复选框之前,控制台日志就会打印出来。你有什么想法可以让它工作吗

模态html:

  <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">