2017-06-14 27 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

相關問題