【问题标题】:How to use core-list-dart with paper-action-dialog如何使用 core-list-dart 和 paper-action-dialog
【发布时间】:2014-12-13 13:38:36
【问题描述】:

我愿意

  • 使用 core-list-dart 显示列表
  • 当我点击列表中的一个元素时显示一个模式(paper-action-dialog)

模式将保存表单字段以更新所选列表项。我现在所拥有的是显示错误信息的模态,例如,如果您单击列表的第二项,则它是模态中显示的第一项的信息

代码如下:

    <core-list-dart data="{{data}}">
        <template>
            <div>
                <div on-click="{{showModal}}">{{model.name}}</div>
                <paper-action-dialog heading="edit exercise: {{model.name}}" backdrop autoCloseDisabled>
                    <paper-input label="name" floatingLabel></paper-input>

                    <paper-button dismissive>Cancel</paper-button>
                    <paper-button on-click="{{updateExercise}}" data-ex-id="{{index}}" affirmative>Ok</paper-button>
                </paper-action-dialog>
            </div>
        </template>
    </core-list-dart>

还有飞镖代码

    @CustomTag('exercise-list')
    class ExerciseList extends PolymerElement {
        @observable ObservableList data;
        ExerciseList.created() : super.created();
        // lifecycle method
        void ready() {
            data = toObservable([new Person('Bob'), new Person('Tim')]);
        }
        showModal(event, detail, target){
            shadowRoot.querySelector('paper-action-dialog').toggle();
        }
        updateExercise(event, detail, target){
            String id = target.dataset['ex-id'];
            print(id);
        }
    }

    class Person extends Observable {
        // mandatory field
        @observable int index;
        // mandatory field
        @observable bool selected;
        //model
        @observable String name;
        Person(this.name);
    }

如何绑定好信息? 谢谢!

Complete Code here

【问题讨论】:

  • 嗨,保罗,代码在链接中。
  • 如果您在此处(仅)发布相关部分,您可能会发现您会得到更好的回应。
  • “坏信息”是指来自错误项目的信息? “好信息”是来自您点击的项目的信息?
  • 如果我点击第一个项目,我想在模式中查看该信息,但事实并非如此。显示的信息总是与第一项相关的信息

标签: dart dart-polymer


【解决方案1】:
shadowRoot.querySelector('paper-action-dialog').toggle(); 

exercise-list 中找到第一个“paper-action-dialog”(只要您不向下滚动且项目未虚拟化,它就是第一个项目)并显示它。

一种解决方案可能是在对话框上创建一个属性,并将索引绑定到它。

<core-list-dart data="{{data}}">
  <template>
    <div index="{{index}}">
    <div index="{{index}}" on-click="{{showModal}}">{{model.name}}</div>
      <paper-action-dialog heading="edit exercise: {{model.name}}" backdrop autoCloseDisabled>
        <paper-input label="name" floatingLabel></paper-input>
        <paper-button dismissive>Cancel</paper-button>
        <paper-button on-click="{{updateExercise}}" data-ex-id="{{index}}" affirmative>Ok</paper-button>
      </paper-action-dialog>
    </div>
  </template>
</core-list-dart>

并将您的代码更改为

var index = target.attributes['index'];
shadowRoot.querySelector('div[index="$index"] paper-action-dialog').toggle();

【讨论】:

  • 我添加了一个解决方案(未测试)。
  • 我现在明白了为什么 在按钮里面了……有了目标就很容易找回它!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-03
  • 1970-01-01
  • 1970-01-01
  • 2014-11-06
  • 2016-04-06
相关资源
最近更新 更多