2017-06-14 58 views
-2

在函数内调用时,不会触发简单的ng-class绑定,我该如何解决这个问题?如何更改函数中的作用域值 - 为什么我的代码无法工作?

$scope.afterHide = function() { 
 
    $scope.inputState = "fade-in"; 
 
}
<label ng-class="inputState">Next statement</label>

+0

里面'scope'选项' '我秀': '=''应该是' 'myShow':“= '' –

+0

是的,设置该指令实际上存在很多错误,但与我的问题无关。 实际错误在: $ scope.afterHide = function(){ $ scope.inputState =“fade-in”; //这行不在这里调用为什么? console.log('刷新语句完全隐藏AFTERHIDE'); } – redleome

+0

**消除与问题无关的任何问题。**请参阅[如何创建最小,完整和可验证示例](https://stackoverflow.com/help/mcve)。 – georgeawg

回答

1

工作正常,在这个例子中:

angular.module("app",[]) 
 

 
.controller("ctrl", function($scope) { 
 

 
    $scope.afterHide = function() { 
 
     $scope.inputState = "fade-in"; 
 
    }; 
 
    
 
    $scope.reset = function() { 
 
     $scope.inputState = ""; 
 
    }; 
 
});
.fade-in { 
 
    background-color: red; 
 
}
<script src="//unpkg.com/angular/angular.js"></script> 
 
<div ng-app="app" ng-controller="ctrl"> 
 

 
    <label ng-class="inputState">Next statement</label> 
 

 
    <br><button ng-click="afterHide()">Invoke afterHide</button><br> 
 
    <button ng-click="reset()">Reset</button> 
 
</div>


如果它工作,然后我认为它与我的代码的整体逻辑有关。函数$scope.afterHide由其中一个指令中的事件触发,该指令在控制器外部定义。在html中,它基本上只是另一个具有变化状态的div。发生更改时,页面上的其他元素也会受到影响,在此情况下,其他元素是标签标签。发生更改时,控制器内的$scope.afterHide功能由控制器外部定义的指令调用。

作用域按层次结构排列,模仿应用程序的DOM结构。

ng-click指令不能在一个范围那就是它的层次结构外调用的函数。另外,如果ng-click指令位于使用隔离范围的指令内的模板上,则该事件必须通过绑定表达式“&”绑定到父范围。

欲了解更多资讯,请

+0

谢谢你的回复。如果它有效,那么我认为它与我的代码的整体逻辑有关。函数$ scope.afterHide由其中一个指令中的事件触发,该指令在控制器之外定义。在html中,它基本上只是另一个具有变化状态的div。发生更改时,页面上的其他元素也会受到影响,在此情况下,其他元素是标签标签。当更改发生时,控制器中的$ scope.afterHide函数由控制器外部定义的指令调用。 – redleome

+0

查看更新以回答。 – georgeawg

+0

这是现货。我现在得到了它的工作,谢谢你 – redleome

相关问题