4
\$\begingroup\$

I am using MVC+Angular. In MVC, I created partial views for search, listing, etc. I show them using:

@Html.Partial("_Search")

@Html.Partial("_Featured")

@Html.Partial("_Listing")

Previously each partial view had an ng-app and ng-controller.

Now I combined them all into one ng-app. I added ng-app to master page, and I just used the ng-controller in every partial view.

 <div ng-controller="Search" class="slide">
some ng-repeat goes here
</div>

Angular code:

angular.module("ProductListing", [])
.controller("Search", function ($scope,$templateCache, $http) {
    $(document).on("keyup", ".txtTempleSearch", function () {
        var searchTerm=$(this).val();
        $.get(configUrl + "SearchGrouped/" + searchTerm, function (data) {
            $scope.Results = JSON.parse(data)[0].result;
                $scope.$apply();
        });
    });
})
.controller('featured', function ($scope) {
    $.get(configUrl + 'Featured', function (data) {
        $scope.featuredTemples = data;
        $scope.$apply();
    });
})

Is this approach correct or is it better in terms of maintainability/performance/best practice to have a different ng-app for different partial views and use angular.bootstrap?

\$\endgroup\$
2
\$\begingroup\$

I think this is primarily opinion based, but in the AngularJS docs, there is the following:

Use this directive to auto-bootstrap an AngularJS application. The ngApp directive designates the root element of the application and is typically placed near the root element of the page - e.g. on the <body> or <html> tags.

Also, note that is not possible to have nested ng-app, so, merging the group related controllers into one unique module is a good thing.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.