AngularJS ng-include ไม่รวมมุมมองเว้นแต่จะส่งผ่านใน $ scope


121

มันผิดหรือไม่ที่จะถือว่าngIncludeสามารถใช้เส้นทางดิบ? ฉันพยายามตั้งค่าngIncludeดังต่อไปนี้:

<div ng-include src="views/header.html"></div>

วิธีนี้ใช้ไม่ได้ แต่ถ้าฉันทำสิ่งนี้มันได้ผล

// HeaderController
app.controller('HeaderCtrl', function($scope){
   $scope.templates = {[
     template: { url: 'views/header.html' }
   ]};

   $scope.template = $scope.templates[0].template;
});

ใน index.html ของฉัน

<div ng-controller="HeaderCtrl">
  <div ng-include src="template.url"></div>
</div>

ไม่ngIncludeเพียง แต่ยกเว้นค่าออกจากขอบเขตหรือไม่ ถ้าเป็นเช่นนั้นทำไมจึงเป็นเช่นนี้และไม่ใช่การรวม html บางส่วนโดยตรง

คำตอบ:


327

ng-includeยอมรับการแสดงออก หากคุณต้องการระบุ URL ที่ชัดเจนโดยตรงในนั้นคุณต้องระบุสตริง

<div ng-include src="'page.html'"></div>

เออเพิ่งเห็นนั่นแหละ ตัวอย่างที่ฉันดูคือการใช้เชิงมุมรุ่นเก่ากว่า
ชาด

44
บ่ายวันนี้ใช้เวลานานมากในการพยายามคิดออก ของหลักสูตรจะต้องมีสตริง ที่ทำให้สมบูรณ์ความรู้สึก
Code Whisperer

ไม่ทำงานกับ ngSanitize ที่เปิดใช้งานในโมดูลแอป ฉันกำลังมองหาวิธีแก้ปัญหา
Dida

4
อีกอย่างหนึ่ง: เพจต้องไม่มีเครื่องหมายขีดล่างเป็นชื่อไฟล์

5
คำพูดเดียวเล็ก ๆ ช่วยแก้ปัญหาได้ ฉันไม่เห็นการเปลี่ยนแปลงที่แน่นอน (สายตาที่ไม่ดีของฉัน) โปรดระบุเพิ่มคำพูดเดี่ยวภายในเครื่องหมายคำพูดคู่ในคำ
Fizer Khan

1

ng-includeเช่นเดียวกับคำสั่งอื่น ๆ ( ng-class, ng-src... ) ประเมินนิพจน์เชิงมุมจากขอบเขต หากไม่มีเครื่องหมายคำพูด ( '') มันจะค้นหาตัวแปรของขอบเขต


โปรดทราบว่าคุณไม่จำเป็นต้องระบุsrcแอตทริบิวต์

<div ng-include src="'views/header.html'"></div>

สามารถเขียนใหม่เป็น: (ซึ่งง่ายกว่า)

<div ng-include="'views/header.html'"></div>

คุณยังสามารถใช้ ng-include เป็นองค์ประกอบ :

<ng-include src="'views/header.html'"></ng-include>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.