我需要在页面中点击加载模板html。我试着这样做:
Angular JS:
$scope.selectDialog = function (id, event){
$scope.template = '/template/chat/active_dialog.html';
};
HTML:
<div ng-include="template"></div> Does not work
<div ng-include="{{template}}"></div>
<div>{{template}}</div>
答案 0 :(得分:0)
两种方式,
这个:
$scope.selectDialog = function (id, event)
{
$scope.template = [
{ name: 'template1.html', url: 'template1.html'},
{ name: 'template2.html', url: 'template2.html'}
];
$scope.template = $scope.templates[0];
};
并在您的页面
<div ng-include="template.url"></div>
或者您可以使用templateCache
$scope.selectDialog = function (id, event){
$scope.template = $templateCache.get('/template/chat/active_dialog.html');
};
答案 1 :(得分:0)
如果没有看到所有代码,很难说出你做错了什么。但我在Plunker中创建了一个工作版本代码:
http://plnkr.co/edit/Ll1x35zhDG72Mc5qYD04?p=preview
index.html:
<body ng-app="includeExample">
<div ng-controller="ExampleController">
<button ng-click="selectDialog()">Select Dialog</button>
<div ng-include="template"></div>
</div>
</body>
控制器:
angular.module('includeExample', [])
.controller('ExampleController', ['$scope', function($scope) {
$scope.template = '';
$scope.selectDialog = function (id, event){
$scope.template = 'active_dialog.html';
console.log($scope.template);
};
}]);
答案 2 :(得分:0)
ng-include
起初非常棘手。它的创建是为了减轻外部资源的负载。所以:
ng-include="template"
会尝试加载/template
资源
服务器
ng-include="template.url"
会尝试加载/template.url
资源
在服务器上。
ng-include="templates/main.html"
将加载/templates/main.html
服务器上的资源。
在变量(或角度语言中的表达式)中引用URL的唯一方法是将表达式包装在 single quotes 中。话虽如此,您的主模板应该是这样的:
<div ng-include="'template'"></div> Not single quotes inside double ones.