Javascript 试图将值传递到自定义指令中

Javascript 试图将值传递到自定义指令中,javascript,angularjs,Javascript,Angularjs,使用Elasticsearch和AngularJS构建一个小型搜索应用程序。2页,主页和结果页。一切正常,除了。。。我有一个自定义搜索指令,我正试图将服务的值传递给它。服务是绑定到控制器中ngModel的变量 如何将searchTerms的值从主页传递到结果页面 我的服务 .service('queryService', function() { var searchTerms; this.searchTerms = null; 我将服务传递到控制器并将其设置为$scope $

使用Elasticsearch和AngularJS构建一个小型搜索应用程序。2页,主页和结果页。一切正常,除了。。。我有一个自定义搜索指令,我正试图将服务的值传递给它。服务是绑定到控制器中ngModel的变量

如何将searchTerms的值从主页传递到结果页面

我的服务

.service('queryService', function() {
    var searchTerms;
    this.searchTerms = null;
我将服务传递到控制器并将其设置为$scope

$scope.searchTerms = queryService.searchTerms;
然后我观察它的变化

$scope.$watch('searchTerms', function() {
queryService.searchTerms = $scope.searchTerms;
}))

我的指令是这样的

.directive('searchResults', ['queryService', function(queryService) {
    return {
        restrict: 'E',
        replace: true,
        //priority: 1001,
        scope: {
            searchTerms: "=",//ngModel
            results: "=",
            websiteUrls: "=",
            suggestions: "&",
            search: "&"
        },
        templateUrl: 'search/search-results.html',
        link: function(scope, element, attrs) {

        }
    }
}]);
我的搜索输入:

<input type="text" name="q" ng-model="searchTerms" placeholder="Search" class="form-control input-lg" id="search-input" uib-typeahead="query for query in getSuggestions($viewValue)" typeahead-on-select="search($item)" autofocus>

我有双向数据绑定工作,但没有自动完成(Angular UI Bootstrap Typeahead)或搜索功能。我很确定链接函数中会出现一些东西,只是不确定是什么。。。仍在学习AngularJS指令

注意:如果我从结果页面执行搜索,一切正常

更多信息因此,基本上我要做的是用户在主页上输入搜索词。searchTerms是我的模式。我正在使用AngularJS UI引导程序Typeahead来实现自动完成功能(可以在输入标签上看到)。我有一个queryService,它将searchTerms初始化为null,并且queryService被DI导入控制器。我有一个具有隔离作用域(作用域:{})的指令,在这里我传递searchTerms、results对象以及autocomplete和search函数。我现在正在使用ngRoute,因为我试图保持这个简单,直到我有它的工作-它只有2页

HTML代码片段

<search-results ng-model="searchTerms" website-urls="page" results="results" uib-typeahead="query for query in getSuggestions($viewValue)" typeahead-on-select="search($item)"></search-results>

灯泡时刻,也许 随着我对指令的进一步了解,我想我刚刚解决了这个问题。我一开始没有使用指令,所有这些都能正常工作。使用路由、模板和控制器。我应该可以在指令中使用当前的控制器,对吗

我想使用指令的唯一原因是,当AngularJS与CMS结合使用时,它似乎是最好的选择


我现在走对了吗?

在进一步阅读(和理解)之后,我似乎可以使用我的指令中已有的控制器,这应该可以很好地解决这个问题。我将在完成并测试后发布结果。

我想一个或多个代码示例可能会帮助更多。无法清楚地理解:(您将服务“searchTerms”分配给作用域,然后观察其分配回自身的部分?抱歉,但我认为这个问题需要更多信息。@pathrik,我将其分配给控制器中的$scope,然后我观察分配回服务的更改,以便searchTerms可以移植并在未来的各种pa上使用应用程序的rts。抱歉,我想我还是不太清楚。更完整的代码可能会有帮助。所以我有点困惑,为什么你要通过作用域将服务传递给指令。你只需要服务中的值吗?如果我理解正确,你想在你的r上显示从主页输入的搜索词esult page?对于未来的参考,角度服务是单例的,您需要将其传递到指令的范围中,以获得可以将服务注入指令的值,并且服务上的值可以从指令中获得。