2013-11-22 24 views
2

我有兩個div我想用onclick事件有條件地顯示它們。angularjs作用域變量onclick作爲條件div

我的棱角,app.js

$(document).on('click', '#showless', function(el) { 
var appElement = document.querySelector('[ng-app=myapp]'); 
var $scope = angular.element(appElement).scope(); 
    $scope.$apply(function() { 
     $scope.value = false; 
    }); 

}); 

$(document).on('click', '#showmore', function(el) { 
    var appElement = document.querySelector('[ng-app=myapp]'); 
    var $scope = angular.element(appElement).scope(); 
    $scope.$apply(function() { 
     $scope.value = true; 
}); 

}); 

和我的myapp的DIV(myapp.html)

<div ng-show="desc" id="description" class="text-muted" style="padding-top:5px;padding-left:10px;padding-right:10px;color:#2E2E2E;font-size:11px;">{{myapp.value|truncate}}<span><a id="showmore" href="">more</a></span> 
    </div> 
    <div ng-show="!desc" id="description" class="text-muted" style="padding-top:5px;padding-left:10px;padding-right:10px;color:#2E2E2E;font-size:11px;">{{myapp.value}}<span><a id="showless" href="">less</a></span> 
    </div> 

(截斷是一個過濾器我寫的正常工作。)

+0

看起來你來自jquery。 Angular允許你綁定「ng-click」,所以你可以像ng-click = toggle()那樣做,並且在你的JS代碼中只有一個toggle()函數來改變desc變量的狀態。 – asafge

+0

我使用它的鉻擴展,不允許內聯腳本,這意味着ng-click = toggle()是不允許的。 –

+0

'ng-click'不是內聯腳本。 – Stewie

回答

6

我不完全確定你要做什麼,但Angular提供ng-click,所以你不應該綁定到$(document).on('click')

我建議有條件的表演更簡單的方法:

<div ng-show="desc" id="description" class="text-muted" style="padding-top:5px;padding-left:10px;padding-right:10px;color:#2E2E2E;font-size:11px;">{{myapp.value|truncate}}<span><a id="showmore" ng-click="desc = true" href="#">more</a></span> 
    </div> 
    <div ng-show="!desc" id="description" class="text-muted" style="padding-top:5px;padding-left:10px;padding-right:10px;color:#2E2E2E;font-size:11px;">{{myapp.value}}<span><a id="showless" ng-click="desc = false" href="#">less</a></span> 
    </div> 

上述用途ng-click設置的desc值。因此,您不需要控制器中的任何其他邏輯來切換divs

+0

的目標是切換desc,通過moreless像你一般來顯示和隱藏大文本。希望我清楚。謝謝.. –

+0

更新。我將'ng-click'移到'a'。 –