- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下代码,当输入搜索查询并按下输入按钮或单击提交按钮时调用 transitionToRoute('search')。
但是,我的路由器仍然不会在模板中显示搜索查询:
<p>You searched for: "{{searchQuery}}"</p>
URL 看起来像 http://www.example.com/#/search/[object Object]
在搜索某些东西时(这对我来说似乎不正确)。
(完整代码可在以下位置查看:http://jsfiddle.net/Mn2yy/1/)这是相关代码:
模板:
<script type="text/x-handlebars" data-template-name="container">
<button {{action "doSearch"}} rel="tooltip-bottom" title="search" class="icon"><i class="icofont-search"></i></button>
{{view Ember.TextField valueBinding="search" action="doSearch"}}
{{outlet}}
</script>
<script type="text/x-handlebars" data-template-name="searchpage">
<h1>Search</h1>
{{#linkTo "home"}}Homepage{{/linkTo}}
<p>You searched for: "{{searchQuery}}"</p>
</script>
应用 Controller :
MyApp.ApplicationController = Ember.Controller.extend({
// the initial value of the `search` property
search: '',
doSearch: function() {
// the current value of the text field
var query = this.get('search');
this.transitionToRoute('search');
}
});
和搜索页面路由:
MyApp.SearchRoute = Ember.Route.extend({
setupController: function(controller) {
controller.set('searchQuery', this.get('query'));
},
renderTemplate: function() {
this.render('searchpage', { into: 'container' });
}
});
最佳答案
首先,您需要在路由器中为搜索路由定义动态段:
MyApp.Router.map(function() {
this.route("home", { path: "/" });
this.route("search", { path: "/search/:query" })
});
然后在 doSearch
操作中设置应用程序的 searchQuery
属性。您还将 query
变量传递给 transitionToRoute
方法,因为它将填充动态段。
MyApp.ApplicationController = Ember.Controller.extend({
// the initial value of the `search` property
search: '',
doSearch: function() {
// the current value of the text field
var query = this.get('search');
this.set('searchQuery', query);
this.transitionToRoute('search', query);
}
});
由于您需要从 App.SearchController
实例访问此属性,因此您需要使用 needs
API 将两个 Controller 连接在一起:
MyApp.SearchController = Ember.Controller.extend({
needs: ['application'],
application: Ember.computed.alias('controllers.application')
});
将 controllers.application
属性别名为 application
,以避免输入过多,例如。在模板中。
然后在 search
模板中绑定(bind)到这个属性:
<script type="text/x-handlebars" data-template-name="searchpage">
<h1>Search</h1>
{{#linkTo "home"}}Homepage{{/linkTo}}
<p>You searched for: "{{application.searchQuery}}"</p>
</script>
最后一步:如果此时刷新页面,searchQuery
将不会自动从 URL 填充。让我们用 deserialize
钩子(Hook)来解决这个问题:
MyApp.SearchRoute = Ember.Route.extend({
deserialize: function(params) {
this.controllerFor('application').setProperties({
searchQuery: params.query,
search: params.query
});
},
renderTemplate: function() {
this.render('searchpage', { into: 'container' });
}
});
这将从 URL 获取参数并使用 query
键的值设置应用程序 Controller 。
差不多就这些了,希望我没有遗漏任何东西!
关于javascript - EmberJS 如何处理 transitionTo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16014743/
我在使用 embers transitionTo 时遇到了一些问题,我无法让它将参数传递给上下文中的状态。尝试使用 test: Ember.Route.transitionTo('step', {st
我的 ember 应用程序包含一个带有两个嵌套路由的父路由。获取父路由的模型后,我将默认转换到其中一个嵌套路由。 路由器如下 this.resource('parent', {path: '/pare
import React from 'react'; import { Router, Link, Navigation } from 'react-router'; export default c
正如标题所暗示的那样,我正在尝试 transitionTo 一个 Action 的子路径。问题是 Ember 说它找不到任何具有该名称的路径。查看 Ember 文档,我不知道我在这里做错了什么。我希望
我有以下代码,当输入搜索查询并按下输入按钮或单击提交按钮时调用 transitionToRoute('search')。 但是,我的路由器仍然不会在模板中显示搜索查询: You searched fo
Ember 记录了一条警告,指出 transitionTo 已被弃用,取而代之的是 transitionToRoute。不过ember目前有route.transitionTo和controller.
我有一个调用 ember 组件来显示所有数据的 ember 路由。 我有一个案例,其中路由的键发生变化,我使用 route.transitionTo 重新加载。数据加载正常。但问题是组件在 init
我正在尝试使用具有可变参数的路由,这样我就可以使用参数来检查要解析到哪个状态。我做了一个简化的 plunker,它演示了我正在尝试做的事情。问题是目标路线的 Controller 似乎没有启动。然而,
我将 Ember.js 与 Phonegap 相结合,在这里您可以看到 Confirm API。但问题是我无法从这个事件驱动函数 onConfirm.. 执行 this.transitionTo('i
是否可以通过 Controller Action 触发加载路径? 例如: App.PostsController = Ember.ArrayController.extend( actions:
在我的 Angular Controller 中,我有部分代码 $state.transitionTo('newState', {}, { notify: false }) .then(funct
我正在使用 KineticJS 来旋转轮子,使其落在特定的点上。似乎发生在 iOS 上,每 1 秒转换一次。有没有办法提高渲染的性能? var dir = 1; if(direction == "le
Java Flight Recorder API 包含两个注释 TransitionFrom和 TransitionTo但文档对如何使用它们非常简单。 它们应该如何使用?我假设他们继续参加 Activ
我刚刚将我的应用程序升级到 ember 2.1 并在我的网络浏览器控制台中收到此错误: Uncaught TypeError: this.transitionTo is not a function
我有一个基本的搜索结果页面。这是我的用户界面路由器配置: $stateProvider .state('search', { url: '/search
我正在使用 Ember 1.9.1 并且在转换到带有查询参数的路由时遇到问题。 queryParams不要出现在网址中。 我收到了 http://localhost:8080/login 而不是 ht
在 Controller 中,我有一个使用 $state.transitionTo 的函数“重定向”到另一个状态。 现在我一直在测试这个功能,我总是收到错误 Error: No such state
我不知道如何在组件中的 re-base post 回调内部进行重定向。 https://github.com/tylermcginnis/re-base#postendpoint-options 我正
我有一个看起来像这样的链接 index.html#/calendar/year/month 这就是我设置路线的方式: App.Router.map(function() { this.reso
App.Router.map(function() { this.resource('documents', { path: '/documents' }, function() {
我是一名优秀的程序员,十分优秀!