我正在制作一个$http
(有角度)的帖子,然后在ng-repeat
个DIV上绘制。
之后我需要知道我刚创建了多少个DIV,然后在DOM
中进行了一些JQuery
个操作。
这是我的代码:
function ContactController($scope, $http,$location) {
$http.post('/Home/MakeThings', '{}').then(
function (obj) {
$scope.questionsArr = obj.data;
console.log($scope.questionsArr);
var numBox = $('div[class^="boxQ"]').length;
console.log(numBox);
$scope.changeRoute = function (myPath) {
console.log($scope.myPath);
$location.path(myPath);
}
},
function (error) {
});
}
我无法访问
$(' div [class ^ =" boxQ"]')
因为我猜,它还没有被ng-repeat绘制。
我该怎么做才能选择它。
答案 0 :(得分:0)
我并不确切地知道你想要做什么,但我认为能够做你想做的任何操作的指令就是要走的路。该示例在$ scope上生成questionsArr数组。这些用ng-repeat和custom-directive显示。该指令是什么操作。我点击了元素切换boxQ类。
var mod = angular.module("myApp", []);
mod.controller("MainController", function ($scope) {
$scope.questionsArr = [
"What is your name?",
"Where do you live?"
];
});
mod.directive("questionBox", function () {
return {
restrict: "A",
transclude: true,
template: '<div ng-transclude></div>',
link: function (scope, elem, attrs) {
//elem refers to the jQuery/jqLite
//element of the directive (e.g. <div questionBox></div).
//Just toggling class on click
elem.on("click", function () {
elem.toggleClass("boxQ");
});
}
}
});
HTML:
<div ng-app="myApp" ng-controller="MainController">
<div ng-repeat="q in questionsArr">
<div question-box>{{q}}</div>
</div>
</div>
小提琴here。同样,最好限制控制器中任何类型的选择器/ DOM操作,因为这样的事情就是指令。