在我的應用程序中,我製作了很多「服務」,我可以在我的viewmodels中注入以節省som冗餘和時間。Aurelia自定義元素中的雙向數據綁定 - 將自定義元素綁定到父視圖模型
現在我期待進一步,並使這些表單元素(選擇,文本,複選框 - 選擇下拉菜單),並將它們轉換爲自定義元素,只在自定義元素注入服務。
我可以在某種程度上得到它的工作。自定義元素(在這種情況下選擇)顯示,當我在「父」視圖中需要它時,但是當我更改自定義選擇元素的選定值時,它不綁定到「父」視圖模型,這是我的要求。
我想通過它的模板中的綁定屬性,將自定義元素的選定值綁定到「父」視圖模型上的屬性。
我會在幾分鐘內更新哪些小代碼片段。
create.js(我稱之爲父視圖模型)
import {bindable} from 'aurelia-framework';
export class Create{
heading = 'Create';
@bindable myCustomElementValue = 'initial value';
}
create.html上(父視圖)
<template>
<require from="shared/my-custom-element"></require>
<my-custom selectedValue.bind="myCustomElementValue"></my-custom>
<p>The output of ${myCustomElementValue} should ideally be shown and changed here, as the select dropdown changes</p>
</template>
我-custom.js
import { inject, bindable} from 'aurelia-framework';
import MyService from 'my-service';
@inject(MyService)
export class MyCustomCustomElement {
@bindable selectedValue;
constructor(myService) {
this.myService = myService ;
}
selectedValueChanged(value) {
alert(value);
this.selectedValue = value;
}
async attached() {
this.allSelectableValues = await this.myService.getAllValues();
}
}
什麼發生的最初是create.html視圖輸出「初始值」,並且當我改變自定義元素select的值時,新選擇的值e被警告,但它不會更新綁定的父變量,它仍然只顯示「初始值」。
哇感謝這麼許多。多麼驚人的答案。事實上,這個蛇案件只是樣本代碼中的一個錯字,但是這個.two方式確實有所不同! :D我可以問你你喜歡什麼 - 裝飾或雙向? – Dac0d3r
您應該將默認綁定模式設置爲其他人(或您自己)期望的綁定模式。我會說在這個例子中默認設置爲雙向,因爲它是控件最自然的用法 - 你幾乎總是希望'selected-value'綁定雙向。這是Aurelia使用慣例的方式,並且效果很好。 – Charleh
+1,並感謝蛇的外殼提及。我沒有看到在文檔中提到的例子是一個單詞變量。當它和其他人完全一樣完成時,瘋狂地試圖找出一個綁定不起作用。 – Danomite