2017-02-21 114 views
0

引用gridOptions我有一個UI電網具有toggleFilter按鈕:從角三元操作

$scope.gridOptions = { 
    ... 
    enableFiltering: false, 
    ... 
} 

$scope.toggleFilter = function() { 
    $scope.gridOptions.enableFiltering = !$scope.gridOptions.enableFiltering; 
    $scope.gridApi.core.notifyDataChange(uiGridConstants.dataChange.COLUMN); 
}; 

<div id="filter" ng-click="toggleFilter()"> 
    ({{$scope.gridOptions.enableFiltering ? "-" : "+"}}) {{$scope.gridOptions.enableFiltering ? "Dis" : "En"}}able Filtering 
</div> 

的切換是如預期的文本顯示在負載是正確的,但不與變化更新工作enableFiltering。缺少什麼是正確綁定此屬性?

回答

2

從您的HTML中刪除$範圍。這裏

({{gridOptions.enableFiltering ? "-" : "+"}}) {{gridOptions.enableFiltering ? "Dis" : "En"}}able Filtering 

工作plunker https://plnkr.co/edit/vT6Ae8aJXrqonhq8ueKQ?p=preview

var app = angular.module('plunker', []); 
 

 
app.controller('MainCtrl', function($scope) { 
 
    $scope.name = 'World'; 
 
    
 
    $scope.gridOptions = { 
 
    
 
    enableFiltering: false, 
 
    
 
} 
 

 
$scope.toggleFilter = function() { 
 
    $scope.gridOptions.enableFiltering = !$scope.gridOptions.enableFiltering; 
 
    //$scope.gridApi.core.notifyDataChange(uiGridConstants.dataChange.COLUMN); 
 
}; 
 
    
 
    
 
});
<!DOCTYPE html> 
 
<html ng-app="plunker"> 
 

 
<head> 
 
    <meta charset="utf-8" /> 
 
    <title>AngularJS Plunker</title> 
 
    <script> 
 
    document.write('<base href="' + document.location + '" />'); 
 
    </script> 
 
    <link rel="stylesheet" href="style.css" /> 
 
    <script data-require="[email protected]" src="https://code.angularjs.org/1.3.20/angular.js" data-semver="1.3.20"></script> 
 
    <script src="app.js"></script> 
 
</head> 
 

 
<body ng-controller="MainCtrl"> 
 
    <div id="filter" ng-click="toggleFilter()"> 
 
    ({{gridOptions.enableFiltering ? "-" : "+"}}) {{gridOptions.enableFiltering ? "Dis" : "En"}}able Filtering 
 
    </div> 
 

 
</body> 
 

 
</html>

+0

這是問題所在。從HTML中刪除了'$ scope'。假設你只是爲了舉例而刪除了'notifyDataChange'。這仍然需要添加/刪除網格上的過濾器輸入。 – Paul

+0

是的,例如,我評論「notifyDataChange」。 – MechanicalCoder

0

這裏是用我的方法一plunker:https://jsfiddle.net/frishi/psysv1ao/2/

我不認爲你的三元表達的要求不斷得到評估,你不需要使用$scope來訪問屬性它在你看來。這是暗示的。其次,這是我的觀點,控制DOM渲染的三元組是非常不可讀的。請考慮使用ng-ifng-show來實現DOM的條件呈現。