2012-09-20 20 views
120

Có sai không khi giả định rằng ngInclude có thể lấy đường dẫn thô? Tôi tiếp tục cố gắng đặt số ngInclude của mình như sau:

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

Điều này không có tác dụng nhưng nếu tôi làm điều gì đó như vậy nó hoạt động.

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

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

Trong index.html của tôi

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

Liệu ngInclude chỉ trừ giá trị ra khỏi phạm vi? Nếu vậy tại sao nó theo cách này và không phải là một bao gồm thẳng của phần html.

Trả lời

326

ng-include chấp nhận một biểu thức. Nếu bạn muốn chỉ định URL rõ ràng trực tiếp trong đó, bạn phải đưa ra một chuỗi.

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

Yea chỉ thấy điều đó. Các ví dụ mà tôi đang xem đang sử dụng một phiên bản góc cũ hơn. – Chad

+44

Đã dành rất nhiều thời gian vào buổi chiều này để cố gắng tìm hiểu điều này. * Tất nhiên * nó cần phải là một chuỗi. Điều đó làm cho * hoàn thành * ý nghĩa. –

+0

không hoạt động với ngSanitize được bật trong mô-đun ứng dụng. Tôi đang tìm một giải pháp. – Dida

1

ng-include, như chỉ thị khác (ng-class, ng-src ...) toán một biểu thức kiễu góc từ phạm vi. Không có dấu ngoặc kép (''), nó sẽ tìm kiếm một biến của phạm vi.


Lưu ý rằng bạn không phải chỉ định thuộc tính src.

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

Có thể rewritted tới: (có nghĩa là đơn giản)

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

Bạn cũng có thể sử dụng ng-bao gồm như một yếu tố:

<ng-include src="'views/header.html'"></ng-include> 
Các vấn đề liên quan