将服务价值传递给指令

时间:2016-03-08 04:56:59

标签: angularjs

试图弄清楚如何将服务中的值从一个方向传递到另一个方向?我正在使用Elasticsearch和AngularJS构建一个小型搜索应用程序。它有2页,主页和结果。在家中,只有功能是自动完成(使用AngularJS UI Bootstrap Typeahead),结果页面,显示结果和搜索框。我正在尝试使用自定义指令来执行此操作。

我基本上一切都工作除了,当在主页上时,按下搜索按钮只进入结果页面,不进行任何搜索处理。一切都适用于结果页面,自动完成和搜索功能......

我最近将ng-model(searchTerms)放入了自己的服务中,但我将该服务转发到我的控制器中。我唯一能想到的是,某种程度上我的ng模型没有被传递给指令?我很难过......仍在学习AngularJS指令。

基本上,searchTerms的所有服务都是

this.searchTerms = null;

有什么想法吗?

更新我现在使用的是v1.47并使用ngRoute。

更新2 我现在有2路数据绑定工作。因此,当在主页上提交查询时,searchTerms变量现在显示在结果页面上。但是,仍然没有显示结果并且没有执行任何处理。所以只有双向数据绑定才有效。

更新3

'use strict';

angular.module('searchengine.query-service', [])
    .service('queryService', function() {
        var searchTerms;
        this.searchTerms = null;
    });

1 个答案:

答案 0 :(得分:0)

你可以考虑这两个页面的“组件”,在更新的日期Angular术语中,你想在它们之间导航,将你的搜索词作为变量传递。

在您的搜索页面中,您需要一些代码

$router.navigate(['ResultsPage', {searchTerm: yourSearchTermGoesHere}]);

当结果组件激活时,它应检查搜索词是否存在,并在搜索词随后更改时执行任何搜索处理。

路由器文档 - https://docs.angularjs.org/guide/component-router。详细了解“额外参数”和“生命周期挂钩”部分