要在非视图模型类中获取当前路由,最佳做法是注入路由器并使用this.router.history.fragment?或者这是不是吗?
我canDeactivate()在视图模型中使用.用户可以从不canDeactivate应该进行检查的视图导航,只返回true(在这种情况下,当用户按下另一个视图中的Back按钮时).似乎canDeactivate不接受任何参数(例如传递给params router.navigateToRoute).如果确实如此,我可以指示调用时在params arg中按下了Back按钮navigateToRoute.提供canDeactivate这些所需信息的好方法是什么?
我正在使用aurelia-animator-css为路由器视图设置动画.导航到新的路由器视图后,我希望当新视图从右侧滑动到屏幕时,当前视图从屏幕向左滑动.
这是我的router-view元素:
<router-view swap-order="with"></router-view>
这是每个视图中的顶部元素:
<div class="pages au-animate">
这是css:
@keyframes slideLeftIn {
0% {
transform: translate(100%, 0);
}
100% {
transform: translate(0, 0);
}
}
@keyframes slideLeftOut {
0% {
transform: translate(0, 0);
}
100% {
transform: translate(-100%, 0);
}
}
.pages.au-enter {
transform: translate(100%, 0);
}
.pages.au-enter-active {
animation: slideLeftIn 0.6s;
}
.pages.au-leave-active {
animation: slideLeftOut 0.6s;
}
Run Code Online (Sandbox Code Playgroud)
我使用autoprefixer,所以不需要像"webkit-"这样的前缀.
使用时swap-order="with",当前视图从屏幕向左滑动,然后出现新视图而不滑动.
同样的事情发生在swap-order="before".
这里有一个YouTube的视频画面带swap-order="with".
使用时swap-order="after",当前视图从屏幕向左滑动,然后新视图从右侧滑入.
这里有一个YouTube的视频画面带swap-order="after".
我认为这 …
有下表:
Clients (ID, LastName)
Orders (ID, ClientID)
Payments (ID, OrderID, PaymentDate, Amount)
Run Code Online (Sandbox Code Playgroud)
我需要一个SQL查询,它将返回在给定日期之后付款的客户LastNames列表,该日期总计至少有一些金额.
示例:检索2011年1月1日之后至少为1,000美元的所有客户.
我可以得到自指定日期(2011年1月1日)以来付款的客户,如下所示:
SELECT Clients.LastName
FROM Clients
WHERE Clients.ID IN (SELECT Orders.ClientID
FROM Orders
WHERE Orders.ID IN (SELECT Payments.OrderID
FROM Payments
WHERE Payments.PaymentDate >= '2011-01-01'))
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚如何只获得这些付款加起来至少给定金额的客户.
我在同一页面上有两个视图.视图A的视图模型需要在视图B的视图模型中调用方法.Aurelia有可能吗?
另外,这是最好的方法吗?使用EventAggregator(pub/sub)在视图模型之间进行通信会更好吗?
- - - 更多细节 - - -
更具体一点,我的app.html文件中使用了一个导航栏,如下所示:
<template>
<require from="nav-bar-view"></require>
<nav-bar-view></nav-bar-view>
<router-view></router-view>
</template>
Run Code Online (Sandbox Code Playgroud)
路由器视图中的视图模型需要能够更改导航栏的标题和按钮文本.
我最初的设计是使用pub/sub将更改传达给导航栏视图模型.由于这看起来有点混乱和过于复杂,我想提出一个更简单的方法.
我的最新想法是创建一个单独的NavBar类,它注入到NavBarView类和"消费者"视图模型中.
以下是代码的简化版本:
NAV-BAR-view.html:
<template>
<div class="center">${navBar.title}</div>
</template>
Run Code Online (Sandbox Code Playgroud)
NAV-BAR-view.js:
import {inject} from 'aurelia-framework';
import {NavBar} from 'nav-bar';
@inject(NavBar)
export class NavBarView {
constructor(navBar) {
this.navBar = navBar;
}
}
Run Code Online (Sandbox Code Playgroud)
NAV-bar.js:
import {singleton} from 'aurelia-framework';
@singleton()
export class NavBar {
constructor() {
this.title = '';
}
}
Run Code Online (Sandbox Code Playgroud)
view.js(导航栏的消费者):
import {inject} from 'aurelia-framework';
import {NavBar} from 'nav-bar';
@inject(NavBar)
export class View {
constructor(navBar) {
this.navBar …Run Code Online (Sandbox Code Playgroud) Xcode Playground 中的以下代码在主题中产生错误:
import SwiftUI
struct Test2 {
var i: Int64
var j: UUID
}
struct Test {
@State private var t: Test2
init(_ test: Test2) {
t = test // Variable 'self.t' used before being initialized
}
}
Run Code Online (Sandbox Code Playgroud)
显然,我没有使用t,而是为其分配了一个值。
如果我var j: UUID从 中删除Test2 struct,错误就会消失。
在我的实际代码中,Test 结构是一个视图,但这不是生成错误所必需的。