Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在angular release 4及更高版本中添加自定义html标记_Html_Angular - Fatal编程技术网

在angular release 4及更高版本中添加自定义html标记

在angular release 4及更高版本中添加自定义html标记,html,angular,Html,Angular,我有一个项目,我正在从angular的旧版本转换为angular release 6。在旧项目中,我有一个自定义html标记,作为指令添加。html标记是: <search-result-item item="item"></search-result-item> 这方面的旧html是: 'use strict'; (function() { var searchResultItem = function($templateCache)

我有一个项目,我正在从angular的旧版本转换为angular release 6。在旧项目中,我有一个自定义html标记,作为指令添加。html标记是:

<search-result-item item="item"></search-result-item>
这方面的旧html是:

    'use strict';
    (function() {

        var searchResultItem = function($templateCache){
            var controller = ['$scope', 'common.logModel', 'config', 'utilService', function($scope, Log, config, utilService){
                var vm = this;

                activate()

                function activate(){

                }

                vm.getNumberOfWordsToShow = function (entry) {
                    if (typeof entry.numberOfWords === "undefined") {
                        return config.search.numberOfWordsShown;
                    }
                    else if (entry.numberOfWords === config.search.showAll) {
                        return config.search.showAllentry;
                    }
                    else {
                        return entry.numberOfWords;
                    }

                }
                vm.showMoreInfoLabel = function (entry) {
                    return (entry.details && entry.details !== null) ||
                        (entry.description.length > 0 && entry.description.length > config.search.numberOfWordsShown );
                }

                vm.showDetails = function (entry) {
                    entry.showDetails = !entry.showDetails;
                    entry.numberOfWords = entry.showDetails ? config.search.showAll : config.search.numberOfWordsShown;
                }

                vm.showMetadata = function (entry) {
                    utilService.openVoyagerLink(entry.pathToMetadata);
                }

            }];

            return {
                restrict: 'E',
                replace: false,
                scope: {
                    item: '='
                },
                controller: controller,
                controllerAs: 'vm',
                bindToController: true,
                template: $templateCache.get('common/directives/searchresultitem/searchResultItem.tpl.html')
            };

        }
        var commonModule = angular.module('commonModule');
        commonModule.directive('searchResultItem', searchResultItem);
        searchResultItem.$inject = ['$templateCache'];

    }());
    <div class="row">
        <div class="col-lg-9">
            <div class="data-results-section">

            <p class="search-result-url"><a ng-if="vm.item.path.substring(0,4) === 'http'" href="{{vm.item.path}}"
                                            target="_blank">{{vm.item.path}}</a></p>

            <div ng-if="vm.item.path.substring(0,4) !== 'http'">{{vm.item.path}}</div>
            <p ng-show="vm.item.hasMetadata && vm.item.pathToMetadata.length > 0">
                <a ng-click="vm.showMetadata(vm.item)" target="_blank">Metadata</a>
            </p>

            <p><span class="body-12-bold">Format: </span>{{vm.item.format}}</p>
            <p><span class="body-12-bold">Indexed: </span>{{vm.item.indexed | date:'MM/dd/yyyy'}}</p>
            <p><span class="body-12-bold">Relevance: </span>{{vm.item.score}}</p>

            <p ng-show="vm.item.description.length > 0"><span>Description: </span>{{vm.item.description | htmlToPlaintext
                | words : vm.getNumberOfWordsToShow(vm.item) }}
            </p>

            <div ng-show="vm.item.showDetails" ng-repeat="(key, val) in vm.item.details">
                <p><span>{{key}}:</span>{{val}}</p>
            </div>
            <a class="search-result-view-more" href=""
               ng-show="vm.showMoreInfoLabel(vm.item)"
               ng-click="vm.showDetails(vm.item)">
                <span ng-if="vm.item.showDetails">Hide</span>
                <span ng-if="!vm.item.showDetails"  class="links-14">View More Information</span> </a>
                <!--links-14-->

            </div>
            <br>
        </div>
        <div class="col-lg-3">
            <img class="search-result-img img-responsive"
                 ng-src="{{vm.item.thumbPath}}" fallback-img>
        </div>
    </div>

{{vm.item.path}



我很难找到关于这个例子的信息和文档。如果你要把它移植到Angular代码中,你必须把所有这些都封装在一个@组件中,大量的例子和描述

特别是,您需要查看
选择器
参数,因为它允许您指定如何在html中引用它。具体到您的示例可能如下所示

@Component({
   selector: 'search-result-item'
   ...

然后,您可以使用

引用它,这并不简单,因为AngularJs中的Angular是全新的,无论如何,这非常有用。谢谢你,约书亚!