标签: aurelia-binding

Aurelia - 在数据绑定中使用变量作为属性名称

使用Aurelia,是否可以使用变量名来动态引用模型对象的属性名?

使用Javascript:

dow = ['monday', 'tuesday', 'wednesday', 'thursday', 'friday'];
test = {
    monday:     false,
    tuesday:    false,
    wednesday:  false,
    thursday:   false,
    friday:     false,
};
Run Code Online (Sandbox Code Playgroud)

HTML:

<label repeat.for="day of dow"><input type="checkbox" class="form-control" checked.bind="test[day]" />${day}</label>
Run Code Online (Sandbox Code Playgroud)

这导致:"TypeError:obj未定义"

javascript aurelia aurelia-binding

7
推荐指数
1
解决办法
1621
查看次数

使用Aurelia的架构表单

我正在使用Aurelia基于json构建动态表单.表单是从json生成的,如下所示:

Schema = [{
    'key': 'Name',
    'display': 'Name',
    'type': 'text',
    'placeholder': 'Name',
    'required': true
},
{
    'key': 'IsSubscribed',
    'display': 'Subscribed to newsletter?',
    'type': 'checkbox',
    'placeholder': null,
    'required': false
}];
Run Code Online (Sandbox Code Playgroud)

填写表单的模型可通过Web API服务获得.所以,我成功使用以下模板.

    <template>

    <section class="au-animate">
    <h2>Edit Form</h2>
    <form class="form-group">
        <div repeat.for="item of Schema" class="form-group">
            <label if.bind="item.type === 'text' || item.type === 'checkbox'" class="control-label" for.bind="item.key">${item.display}
                <input class="form-control" id.bind="item.key" placeholder.bind="item.placeholder" type.bind="item.type" value.bind="Model[item.key]" />    
            </label>
            <label if.bind="item.type === 'textarea'">${item.display}
                <textarea placeholder.bind="item.placeholder" value.bind="Model[item.key]></textarea>
            </label>
            ...
        </div>
    </form>
    </section>

    </template>
Run Code Online (Sandbox Code Playgroud)

当模型包含另一个对象作为属性时,我现在面临困难.例如,对于属性地址我想要一个City的输入框.

因此,item.key = "Address.City". …

javascript json aurelia aurelia-binding

7
推荐指数
1
解决办法
747
查看次数

使用Aurelia-CLI进行CSS管理:每个视图都会加载另一个要在站点范围内强制执行的CSS文件,从而导致冲突

我有一个包含6个视图(html)的项目.每个视图都有一个对应的视图模型(.js)和一个仅适用于该视图的样式表(.css)

aurelia-cli可以很好地通过我的文件递归递归并将所有.js和.css文件捆绑到几个文件中,以便在减少页面加载时间和大小的同时引用它们.因此,如果我有一个带welcome.html,welcome.js和welcome.css的欢迎文件夹,我可以使用以下内容加载welcome.html的CSS,<require from="./welcome.css"></require><head></head>在页面加载时将CSS注入到标记中.

问题是当我导航到下一个视图时,来自welcome.html/welcome.css的CSS规则仍然在<head>网页的标记内,因此仍然被强制执行.在我的应用程序中访问了所有6个视图后,我现在在<style>标记中有6个标记<head>,所有六个页面中的所有规则都在我去的每个页面上强制执行,直到刷新页面为止没有卸载.毋庸置疑,在访问了几页后,整个网站变得混乱垃圾.

所以我的问题是

  1. 为什么这是一个功能
  2. 我错过了最佳实践吗?
  3. 有没有办法在访问时为页面加载css,在导航时卸载它,并在其中加载新页面css?

如果我有一个10页的应用程序,其中包含全局样式表,bootstrap,动画css和字体真棒,那么在一天结束时,我会将14个冲突的样式永久注入到html中,其余的应用程序将被注入.

有什么建议?

javascript aurelia aurelia-binding aurelia-cli aurelia-bundling

7
推荐指数
1
解决办法
1178
查看次数

如何使用ref.view-model功能

我在文档中看到了这个功能,但我无法弄清楚如何从该信息中使用它.

它说: <i-produce-a-value ref.view-model="producer"></i-produce-a-value> <i-consume-a-value input.bind="producer.output"></i-consume-a-value> 这在现实世界的例子中是什么样的?

aurelia aurelia-binding

6
推荐指数
1
解决办法
4003
查看次数

在Aurelia中将数据从一个视图模型传递到另一个视图模型

我有一个名为的页面entry-main,它包含以下模板:

<template>
    <entry-search></entry-search>
    <entry-details></entry-details>
</template>
Run Code Online (Sandbox Code Playgroud)

里面<entry-search>有另一个自定义元素.它看起来像这样:

<template>
    <div class="row">
        <div class="col-lg-12">
            <div class="input-group">
                <span id="entry_search" class="input-group-addon">
                    <span class="fa fa-search"></span>
                </span>
                <!-- important part -->
                    <typeahead id="choose" placeholder="Holding the place"></typeahead>
                <!-- end of important part -->
            </div>
        </div>
    </div>
</template>
Run Code Online (Sandbox Code Playgroud)

在typeahead viewmodel中,我得到了我的typeahead的值,如下所示:

$(this.id).on('typeahead:selected', function (e, item) {
       this.selected = item;
});
Run Code Online (Sandbox Code Playgroud)

我现在的问题是,如何this.selected从我的entry-details-viewmodel中获取我的typeahead-viewmodel?
为了清楚起见,它应该是这样的:

<entry-main>
    <entry-search>
          <typeahead></typeahead>
    </entry-search>

    <entry-details>
          ${selected}
    </entry-details>
</entry-main>
Run Code Online (Sandbox Code Playgroud)

ecmascript-6 aurelia aurelia-binding

6
推荐指数
1
解决办法
2727
查看次数

从组件文件和视图模型生成原始HTML字符串

我们有这样的模板.

该-template.html

<template><div>${Foo}</div></template>
Run Code Online (Sandbox Code Playgroud)

我们想用它来做这件事.

一些-file.ts

let htmlString = makeItHappen('the-template.html', { Foo = 'bar' });
console.info(htmlString); // <div>bar</div>
Run Code Online (Sandbox Code Playgroud)

什么是我们的makeItHappen功能?

javascript typescript aurelia aurelia-binding

6
推荐指数
1
解决办法
661
查看次数

使用<compose view-model ="./ my-element">和<my-element>之间有什么区别?有哪些情况更合适?

我和队友在过去的四个月里一直在Aurelia建立一个应用程序,他和我一直在以这两种不同的方式创建和使用组件.我希望有一些一致性并将所有内容改为两种风格中的一种,但我不知道哪种风格更适合我们的需求.

我选择使用<compose>因为对我来说它感觉更干净,适合我遇到的每一个需求,但如果使用自定义元素客观上更好,我想切换到那个.

例如:

(他的观点模型:)

import { bindable, bindingMode } from 'aurelia-framework';

export class HisWay {
  @bindable({ defaultBindingMode: bindingMode.twoWay }) data;
}
Run Code Online (Sandbox Code Playgroud)

(他的观点:)

<require from="./his-way"></require>
<his-way data.two-way="myModel" containerless></project-name>
Run Code Online (Sandbox Code Playgroud)

(我的观点模型:)

export class MyWay {
  activate(model) {
    this.model = model;
  }
}
Run Code Online (Sandbox Code Playgroud)

(我的方式:)

<compose view-model="./my-way" model.bind="myModel" containerless></compose>
Run Code Online (Sandbox Code Playgroud)

我是否需要转换,如果没有,我可以用什么理由来说服他使用我一直使用的相同风格?

javascript aurelia aurelia-binding aurelia-templating

6
推荐指数
1
解决办法
951
查看次数

如何将DOM元素传递给Aurelia函数?

我正在尝试将DOM元素传递给Aurelia函数,但它不起作用.只是注意到这个元素不在'repeat.for'语句中.

我有这样的东西,显然是不正确的:

<span click.trigger="passDom(d)">Pass Dom Element</span>


export class Test {

  passDom(d) {
    console.log(d);
  }
}
Run Code Online (Sandbox Code Playgroud)

我尝试使用$ self,但不能正常工作.

aurelia aurelia-binding

6
推荐指数
1
解决办法
2396
查看次数

当父值从子项更改为DI时,在父视图中刷新绑定

目标是能够在SharedParent和/或SharedState视图中更新"heading",只要它从子项通过DI更改.

我怀疑layout-viewlayout-view-modelAurelia路由器自定义元素有问题.

我需要这个,因为真实代码中的SharedParent,将是抽象的一般计算函数(保存在SharedParent中的变量,当前未在视图中更新)等孩子们将调用(以避免每个孩子复制此功能) ).理想情况下引用SharedParent的DI引用.

理想的解决方案可以直接修改父级.SharedState只是一种额外的测试方式,如果你能看到一种方法让它与选项1一起使用,可以忽略它

选项1是我工作的最高优先级

在这里查看实时运行要点:https://gist.run/? id = 66eeff540a4665694a31482b790bf01e

更新

我已经制作了另一个要点,以显示我为了使父/子关系正常工作而尝试的另一种方式:https://gist.run/?id = 080d4ac3f4d8677d344140a7827aea94 - 在这个例子中,当前路线只是另一个问题由于路由器中的重复"路由"属性,未正确设置.但在这里,至少我们能够从子节点更新父属性.理想的解决方案是同时使用1个解决方案.这样就可以正确设置活动路径,并且子项将能够更新依赖注入父项的属性.最后,父视图需要刷新此更改.这个要点来自另一个问题:如何从链接到父/子视图/控制器的路径动态构建导航菜单 - 但稍微修改以帮助说明在这个问题中没有用的东西,确实在这里工作.

把它们加起来.

我首先尝试用这种方式解决我的问题:https://gist.run/?id = 080d4ac3f4d8677d344140a7827aea94 - 几乎所有的工作都应该如此(从孩子的父级设置标题)并在子视图中反映父母的日期/语言的变化 - 从子节点获取和设置父属性.唯一不起作用的是路由.我无法显示活动路由,因为多个路由共享相同的"路由"属性.

所以我看向布局视图(-model)解决方案(我在这个问题中提出的那个) - 这似乎解决了路由问题,但打破了父/子之间的绑定.

aurelia aurelia-binding

6
推荐指数
1
解决办法
632
查看次数

Aurelia如何在自定义元素和其自己的命名空间中添加绑定行为?

我正在构建一个Aurelia自定义元素,我想使用一个特殊的绑定行为,但我似乎无法在我的自定义元素类之外使用它(声明它).另外,我想知道Aurelia中是否存在绑定行为和其他自定义内容的命名空间?

这是我想要使用的绑定行为

optional-binding.js - 由另一个堆栈问题提供的代码

export class OptionalBindingBehavior {
  bind(binding, scope, interceptor) {
    binding.originalupdateTarget = binding.updateTarget;
    binding.originalTargetProperty = binding.targetProperty;
    binding.updateTarget = val => {
      if (val === undefined || val === null || val === '') {
        binding.targetProperty = null;
      } else {
        binding.targetProperty = binding.originalTargetProperty;
      }
      binding.originalupdateTarget(val);
    };
  }

  unbind(binding, scope) {
    binding.updateTarget = binding.originalupdateTarget;
    binding.originalupdateTarget = null;
    binding.targetProperty = binding.originalTargetProperty;
    binding.originalTargetProperty = null;
  }
}
Run Code Online (Sandbox Code Playgroud)

我试着用这种方式导入

index.js

  import {MyCustomElement} from './my-element';
  import './optional-binding.js';

  export function configure(aurelia) {
    aurelia.globalResources('./my-element'); …
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-6 aurelia aurelia-binding

6
推荐指数
1
解决办法
619
查看次数