2014-11-13 63 views
2

我在我的应用程序中有一个搜索栏。每当用户进行搜索时,我想的状态更改为/#/search/:query以角度手动更改状态与UI路由器

要做到这一点,我附上下面的函数的范围和我触发它随时随地进行查询时:

this.searchItem = function searchItem(item) { 
    $state.go('#/search/' + item) 
} 

然而,这导致以下错误:

Error: Couldn't resolve '#/search/query' from state (current state) at object.transition.To 

我的代码有什么问题?如何在不使用ui路由器的情况下更改状态?

非常感谢

+0

为[@natwallbank(http://stackoverflow.com/users/2841771/natwallbank)指出的那样,你需要通过*状态的名称*到'go'函数:'$ state.go(“search”,{“query”:item});' –

回答

0

当您需要传递状态的名称时,您正在传递一个URL。示例请参阅ui-router wiki

+0

将它作为注释发布并提出问题不是更恰当被提炼? – Shmiddty

+0

我想我回答了这个问题,除非我误解了它。他试图在控制器内转换到不同的状态(可能),而不是在视图中使用ui-sref。它不工作的原因是他传递的是一个URL而不是他需要转换到的状态的名称。 – natwallbank

+0

“你做错了”如何帮助未来的求职者?或者问题是“Off Topic”,应该予以纠正,否则你的回答不够具体。那有意义吗?该网站的目的不是为了提问者的利益,而是为了理解每个试图完成类似任务的人。 – Shmiddty

0

传递状态的名称而不是url。

this.searchItem = function searchItem(item) { 
    $state.go('search', { 
    keyword: item 
    }); 
} 

假设您在路由中有这种状态配置。

$stateProvider.state('search', { 
    url: '/search/:keyword' 
}) 

你可以在这里查看我的样本回购:herehere

相关问题