R D*_*own 172 jquery angularjs
我对AngularJS比较陌生,并怀疑我没有抓住一个概念.我也在使用Twitter Bootstrap,我已经加载了jQuery.
工作流程:用户单击列表中的链接,更新"主"部分并单击链接用户获取活动类.
基本HTML标记:
<ul class="list-holder" ng-controller="adminController">
<li><a ng-click="setMaster('client')">Clients</li>
<li><a ng-click="setMaster('employees')">Employees</li>
<li><a ng-click="setMaster('etc')>Etc...</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
在jQuery中执行此操作:
jQuery(".list-holder").on('click', 'a', function(event){
event.preventDefault();
jQuery(".list-holder li").removeClass('active');
jQuery(this).parent('li').addClass('active');
});
Run Code Online (Sandbox Code Playgroud)
但我无法弄清楚如何集成Angular和jQuery来完成这项工作,因为我正在使用Angular从服务器获取主列表(以JSON格式)并更新页面上的列表.
我如何整合这个?一旦我进入角度控制器功能,我似乎无法找到我点击过的元素
控制器:
function adminController($scope)
{
$scope.setMaster = function(obj)
{
// How do I get clicked element's parent li?
console.log(obj);
}
}
Run Code Online (Sandbox Code Playgroud)
pko*_*rce 282
虽然AngularJS允许您使用以下语法获取单击事件(以及它的目标)(请注意函数的$event
参数setMaster
;此处的文档:http://docs.angularjs.org/api/ng.directive :ngClick):
function AdminController($scope) {
$scope.setMaster = function(obj, $event){
console.log($event.target);
}
}
Run Code Online (Sandbox Code Playgroud)
这不是解决这个问题的角度方式.使用AngularJS时,重点是模型操作.一个人会改变模型,让AngularJS弄清楚渲染.
解决这个问题(不使用jQuery和的AngularJS路,而不需要通过$event
参数)将是:
<div ng-controller="AdminController">
<ul class="list-holder">
<li ng-repeat="section in sections" ng-class="{active : isSelected(section)}">
<a ng-click="setMaster(section)">{{section.name}}</a>
</li>
</ul>
<hr>
{{selected | json}}
</div>
Run Code Online (Sandbox Code Playgroud)
控制器中的方法如下所示:
$scope.setMaster = function(section) {
$scope.selected = section;
}
$scope.isSelected = function(section) {
return $scope.selected === section;
}
Run Code Online (Sandbox Code Playgroud)
这是完整的jsFiddle:http://jsfiddle.net/pkozlowski_opensource/WXJ3p/15/