angularjs ng-include来自控制器

时间:2016-04-14 00:50:49

标签: javascript angularjs

我正在尝试将子页面包含在我的主页面中。

我正在使用ng-include ..当我尝试使用此ng-include="'samplePage.php'"时,它可以工作......但我想要的是在控制器中分配ng-include的值。 ..

这是我的hmtl代码

<div id="navbar-override" class = "navbar navbar-inverse navbar-static-top" ng-controller="indexCtrl">
        <div class = "container">
            <div class = "navbar-header">
                <a href = "index.html" class = "navbar-brand">
                    Sample App
                </a>
                <button id="navbar-btn-override" class = "navbar-toggle" data-toggle = "collapse" data-target = ".navHeaderCollapse">
                    <span class = "icon-bar"></span>
                    <span class = "icon-bar"></span>
                    <span class = "icon-bar"></span>
                </button>
            </div>
            <div class = "collapse navbar-collapse navHeaderCollapse">
                <ul class = "nav navbar-nav navbar-right">
                <li ng-repeat="link in Links"  ng-class="{'active': selectedItem === link}">
                    <a href = "javascript:void(0)" ng-click="Link(this)">{{ link }}</a>
                </li>
                </ul>
            </div>
        </div>
    </div>

    <div class="container" ng-include="pages">
          <!--subpages will append here-->
    </div>

my controller.js

indexApp.controller('indexCtrl', ['$window','$scope', '$http', function($window, $scope, $http) {

$scope.pages = "./pages/customer.php";

}]);

如果你问我为什么这样做...因为我正计划动态地使用ng-include ......

我还是刚刚接触过angularjs,所以请耐心等待...... 提前谢谢..

1 个答案:

答案 0 :(得分:2)

这将有效,

您的HTML:

<div ng-controller="Ctrl">
    <select ng-model="template" ng-options="t.name for t in templates">
     <option value="">(blank)</option>
    </select>
    url of the template: <tt>{{template.url}}</tt>
    <hr/>
    <div ng-include src="template.url" onload='myFunction()'></div>
  </div>

<!-- template1.php-->
<script type="text/ng-template" id="./pages/template1.php">
  Content of template1.php
</script>

<!-- template2.php-->
<script type="text/ng-template" id="./pages/template2.php">
    <p ng-class="color">Content of template2.php</p>
</script>

控制器:

function Ctrl($scope) {
    $scope.templates = [{
        name: 'template1.php',
        url: './pages/template1.php'},
    {
        name: 'template2.php',
        url: './pages/template2.php'}];
    $scope.template = $scope.templates[0];

    $scope.myFunction = function() {
        $scope.color = 'red';
    }
}

http://jsfiddle.net/MfHa6/1517/