在编写指令时,我最终在我的javascript中编写(有时很多)html代码。
我不想在我的javascript文件中加入xml。模板化可能会变得相当复杂,大多数标记引擎会将其渲染为一种颜色,您必须使用'和+。是否有任何好的做法来分离html和javascript。
以下是它的外观示例:
angular.module('ballentines', ['ngStorage']).
directive('fineUploader', function() {
return {
restrict: 'A',
scope: {},
require: '?ngModel',
link: function($scope, element, attributes, ngModel) {
$scope.uploader = new qq.s3.FineUploader({
debug: true,
element: element[0],
request: {
endpoint: 'endpoint',
accessKey: 'accesskey'
},
signature: {
endpoint: '/s3/'
},
iframeSupport: {
localBlankPagePath: '/success.html'
},
retry: {
enableAuto: true // defaults to false
},
text: {
uploadButton: '<p>Upload File</p>'
},
template:
'<div class="qq-uploader">' +
'<p class="qq-upload-drop-area">{dragZoneText}</span></p>' +
'<div class="qq-upload-button btn btn-info">{uploadButtonText}</div>' +
'<span class="qq-drop-processing">{dropProcessingText}</span>' +
'<ul class="qq-upload-list" ></ul>' +
'</div>',
});
}
};
})
答案 0 :(得分:6)
您可以使用templateUrl
指定保存带有模板的html文件的位置
最佳实践:除非您的模板非常小,否则通常是这样 最好将它拆分为自己的HTML文件并加载它 templateUrl选项。
angular.module('ballentines', ['ngStorage']).
directive('fineUploader', function() {
return {
restrict: 'A',
scope: {},
require: '?ngModel',
link: function($scope, element, attributes, ngModel) {
$scope.uploader = new qq.s3.FineUploader({
debug: true,
element: element[0],
request: {
endpoint: 'endpoint',
accessKey: 'accesskey'
},
signature: {
endpoint: '/s3/'
},
iframeSupport: {
localBlankPagePath: '/success.html'
},
retry: {
enableAuto: true // defaults to false
},
text: {
uploadButton: '<p>Upload File</p>'
},
templateUrl: 'mytemplate.html'
});
}
};
})
然后在mytemplate.html
<div class="qq-uploader"><p class="qq-upload-drop-area">{dragZoneText}</span></p><div class="qq-upload-button btn btn-info">{uploadButtonText}</div><span class="qq-drop-processing">{dropProcessingText}</span><ul class="qq-upload-list" ></ul></div>
答案 1 :(得分:1)
而不是template
您可以使用templateUrl
并将其与部分html文件的地址一起提供。
angular.module('ballentines', ['ngStorage']).
directive('fineUploader', function() {
return {
restrict: 'A',
scope: {},
require: '?ngModel',
link: function($scope, element, attributes, ngModel) {
$scope.uploader = new qq.s3.FineUploader({
debug: true,
element: element[0],
request: {
endpoint: 'endpoint',
accessKey: 'accesskey'
},
signature: {
endpoint: '/s3/'
},
iframeSupport: {
localBlankPagePath: '/success.html'
},
retry: {
enableAuto: true // defaults to false
},
text: {
uploadButton: '<p>Upload File</p>'
},
templateUrl:'partial/your_file.html'
});
}
};
})
答案 2 :(得分:0)
其他人已经表示将HTMl放入模板并使用templateURL链接代码会更容易。
我想补充的是,一旦开始编写测试,你应该研究一些模板服务,以帮助简化工作。
我在大多数角度项目中使用grunt,所以这是我最终使用的那个。