ไม่ได้รับข้อมูลของฉันไปยังคำสั่งเชิงมุมของฉัน

ฉันกำลังอ่านไฟล์ data.json และฉันกำลังพยายามเติมแท็บโดยใช้สิ่งนี้ ฉันสามารถทำได้โดยไม่ต้องใช้คำสั่งที่กำหนดเอง แต่ฉันต้องการสร้างความเป็นไปได้หลายอย่างของเค้าโครงโดยใช้คำสั่ง อย่างไรก็ตาม ฉันไม่สามารถทำให้ ng-repeat ทำงานภายในไฟล์ templates/directives/tabs.html ได้ นี่คือการตั้งค่าของฉัน นอกจากนี้ $scope.data.data ของฉันยังพาฉันไปยังอาร์เรย์ที่สามารถวนซ้ำได้สำเร็จอีกครั้ง ขอบเขตภายในคำสั่งเจาะลึกแตกต่างจากใน index.html หรือไม่

index.html การเจาะลึกคือ {{data.whatever}} ต่อไปนี้ภายในคำสั่งเหมือนกันหรือไม่

.controller('TabController', function($scope, $http, _){
    $scope.model = {};
    $http.get('data.json').then(function(resp) {
    $scope.data = resp.data.data;
})

angular.module('myApp').directive('cmTabs', function() {
    return { 
        restrict: 'A',
        scope: {
            content: '='
        },
        templateUrl: 'templates/directives/tabs.html'
    };
})

});

มาร์กอัปของฉันเป็นเช่นนั้น

<!DOCTYPE html>
<html ng-app="myApp" ng-controller="TabController">
    <head>
    <link rel="stylesheet" href="/thnode_modules/bootstrap/dist/css/bootstrap.css">
    <title>{{data.PageTitle}}</title>
    </head>
    <body>
        <nav class="navbar navbar-default"><a class="navbar-brand" href="/th#"><!-- <img alt="Brand" src="..."> -->{{data.PageTitle}}</a>
               <ul class="nav navbar-nav">
                 <li ng-class='{active:$first}' ng-repeat="menu in data.toplevelcontainer" ng-click="model.activeTab=tab" tooltip="{{menu.label}}" tooltip-trigger="mouseenter" tooltip-placement="bottom">
                   <a href="/th#">{{menu.label}}</a>
                 </li>
               </ul>
        </nav>
        <div class="container-fluid" ng-if="data.Layout === 'tabs'" >
          <div cm-tabs content="data"></div>
        </div>
        <div class="container-fluid" ng-if="data.Layout === 'menu'">
          <h1>menu</h1>
        </div>
        <script src="node_modules/jquery/dist/jquery.js"></script>
        <script src="node_modules/angular/angular.js"></script>
        <script src="node_modules/underscore/underscore-min.js"></script>
        <script src="node_modules/bootstrap/dist/js/bootstrap.js" type="text/javascript"></script>
        <script src="app.js"></script>
        <script>
            $("ul.nav-tabs a").click(function (e) {
                e.preventDefault();  
                $(this).tab('show');
            });</script>
        </body>
        </html>

เทมเพลตคำสั่ง

<div class="tabbable boxed parentTabs">
    <div class="tab-content">
        <div class="tab-pane fade active in" id="set1">
            <div class="tabbable">
                <ul class="nav nav-tabs" ng-repeat="t in data.toplevelcontainer">
                    <li ng-class='{active:$first}' ng-repeat="st in t.content.innercontent" data-toggle="tooltip" data-placement="left" title="{{st.tooltip}}"><a href="/th#{{st.label}}">{{sub_tab.label}}</a></li>
                </ul>
                <div class="tab-content">
                </div>
            </div>
        </div>
    </div>
</div>

person pcproff    schedule 20.10.2015    source แหล่งที่มา
comment
คุณใช้ ng-controller ในมาร์กอัปของคุณหรือไม่?   -  person lintmouse    schedule 20.10.2015
comment
ฉันเป็นอย่างนั้นจริงๆ ‹html ng-app=myApp ng-controller=TabController›   -  person pcproff    schedule 20.10.2015
comment
คุณสามารถโพสต์มาร์กอัปของคุณเพิ่มเติมได้ไหม โดยเฉพาะอย่างยิ่งการเชื่อมโยง content ไว้อย่างไร   -  person lintmouse    schedule 20.10.2015
comment
อาจเป็นเพียงการพิมพ์ผิดในรหัสคำถามของคุณ แต่ฟังก์ชันตัวควบคุมของคุณยังไม่สมบูรณ์ คุณหายไป })   -  person Phil    schedule 20.10.2015
comment
สวัสดี Phil ใช่ มันเป็นการพิมพ์ผิดที่ฉันจะเพิ่มในโพสต์   -  person pcproff    schedule 20.10.2015
comment
@pcproff สวัสดี เทมเพลตคำสั่งของคุณมีลักษณะอย่างไร ฉันหมายถึงคุณจะใช้โมเดล content ของคุณภายในเทมเพลตคำสั่งของคุณได้อย่างไร   -  person Abhilash Augustine    schedule 20.10.2015
comment
@AbhilashPA ฉันได้โพสต์สิ่งนี้แล้ว ฉันสงสัยว่าฉันควรใช้ content.toplevelcontainer หรือไม่?   -  person pcproff    schedule 20.10.2015
comment
@pcproff ใช่ คุณควรใช้ content แทน data   -  person Abhilash Augustine    schedule 20.10.2015
comment
@AbhilashPA ช่างเป็นการกำกับดูแล !!! แต่ตอนนี้ฉันรู้แล้วว่าคำสั่งรับข้อมูลอย่างไร ตอนนี้เพื่ออ่านเอกสารว่า '=' หมายถึงอะไร   -  person pcproff    schedule 20.10.2015
comment
@pcproff ฉันจะได้รับ accepted answer ได้ไหมหากฉันโพสต์ความคิดเห็นนี้เป็นคำตอบของฉัน :)   -  person Abhilash Augustine    schedule 20.10.2015


คำตอบ (1)


คุณควรใช้ content.toplevelcontainer แทน data.toplevelcontainer

เนื่องจากคุณกำลังแมปโมเดลขอบเขตของคอนโทรลเลอร์ data เข้ากับ content ในคำสั่งของคุณ ดังนั้น ข้อมูลจากคอนโทรลเลอร์ของคุณจึงถูกกำหนดให้กับตัวแปรขอบเขตของคำสั่ง content แล้ว

ดังนั้น ng-repeat ของคุณควรมีลักษณะเช่นนี้

<ul class="nav nav-tabs" ng-repeat="t in content.toplevelcontainer">
person Abhilash Augustine    schedule 20.10.2015
comment
ถูกต้องของคุณ! นั่นคือสิ่งที่ฉันทำ! ขอบคุณอีกครั้ง. - person pcproff; 20.10.2015