如何在创建DIV后获得DIV的长度

时间:2014-06-19 13:35:13

标签: javascript jquery angularjs

我正在制作一个$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绘制。

我该怎么做才能选择它。

1 个答案:

答案 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操作,因为这样的事情就是指令。