如何在compure中访问aurelia中的root viewmodel

时间:2017-11-01 16:06:57

标签: aurelia aurelia-binding

我在我的应用程序中使用aurelia compose,如下所示:

<compose view-model="childViewModel" model="{myActivationParameters: ...}"></compose>

如何在childViewModel html代码中访问父视图模型?

最后,我希望能够在childViewModel.html

中执行此操作
<span> ${ ParentViewModel.myProperty } and ${ RootViewModel.myOtherProperty } </span>

我正在找aurelia中的knockoutJs $root$parent等。

编辑:我使用aurelia合成而不是自定义组件。不重复。

1 个答案:

答案 0 :(得分:2)

在撰写元素中,您可以访问其父级的上下文。所以,只需public class Program { static void Main(string[] args) { var containerName = "MyContainer"; var original = "MySecretData!"; var encrypted = Encrypt(containerName, original); var decrypted = Decrypt(containerName, encrypted); Debug.Assert(decrypted == original); Console.ReadLine(); } static string Encrypt(string containerName, string data) { byte[] dataToEncrypt = Encoding.UTF8.GetBytes(data); CspParameters csp = new CspParameters() { KeyContainerName = containerName }; // random key is generated and stored in new created container with provided name // since it does not exist yet using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(csp)) { return Convert.ToBase64String(rsa.Encrypt(dataToEncrypt, false)); } } static string Decrypt(string containerName, string data) { CspParameters csp = new CspParameters() { KeyContainerName = containerName }; // here container already exists so key from that container is used using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(csp)) { return Encoding.UTF8.GetString(rsa.Decrypt(Convert.FromBase64String(data), false)); } } } 。如果在2个视图模型中具有相同名称的属性,则无法访问父属性。

在将来的版本中,您需要在撰写元素中添加属性${myProperty}(请参阅https://github.com/aurelia/templating-resources/issues/222