Создание виджета дочерним элементом нового виджета

Вот ситуация. В моей компании есть элементы управления виджетами, которые существуют уже год или около того. Меня просят добавить в виджет "функцию поиска". До этого момента виджет находится на странице, где поле передается ему через файл cookie. Итак, мой вопрос заключается в следующем: есть ли способ создать новый виджет, который внутри шаблона ссылается на старый виджет и присваивает его свойства во время выполнения?

Вот пример

dojo.provide("company.billing.paymentSearch");
dojo.require("dijit._Widget");
dojo.require("dijit._Templated");
dojo.require("company.test.inquiry");

dojo.declare(
    "company.billing.paymentSearch",
    [dijit._Widget, dijit._Templated],
{
    token: "",
    serviceUrl: "",

    templatePath: dojo.moduleUrl(
        "company.billing",
        "templates/paymentSearch.html"
    ),

    constructor: function(params, node) {
        var self = this;

        function onLoad() {
            self.inquiryWidget.token = self.token;
            self.inquiryWidget.serviceUrl = self.serviceUrl;
            self.inquiryWidget.brandId = "";
            self.inquiryWidget.agencyAccountNumber = "";
            self.inquiryWidget.billingAccountNumber = "";


            self.paymentWidget.token = self.token;
            self.paymentWidget.serviceUrl = self.serviceUrl
        }

        dojo.addOnLoad(onLoad);
    },
    paymentSearch: function() {
        var self = this;
        self.inquiryWidget.billingAccountNumber = self.accountNumber;

    }
}
);

тогда мой шаблон будет

<div>
<div style="float:left; width:20%; border: 1px solid #CCCCCC;">
    <center>
                    Make a Payment

    </center>
    <br />

        Account Number

    <br />
    <input style="width:85%" type="text" dojoattachpoint="accountNumber" />
    <br />
    <div class="searchButton">

    </div>
</div>
<div style="float:right; width:79%">
    <div id="inquiryWidget"
        dojoType="company.billing.inquiry"
        billingAccountNumber=""
        agencyAccountNumber=""
        brandId=""
        waitPanelText="Loading ..."
        showAccountSummary = "true"
        showAccountHistory = "false"
        token=""
        serviceUrl="">
    </div>
</div>

Что я хотел бы сделать, так это нажать кнопку поиска, добавить свойства в queryWidget и запустить его. Возможно ли что-то подобное?


person Isaac Levin    schedule 12.09.2011    source источник


Ответы (1)


arrow_upward
0
arrow_downward

Вы можете программно создать виджет следующим образом:

в шаблоне:

<div id="inquiryWidget" dojoAttachPoint="inquiryNode">

в функции onLoad:

function onLoad() {
    self.inquiryWidget = new company.billing.inquiry({
        token: self.token,
        serviceUrl: self.serviceUrl
    }, self.inquiryNode);
}
person Ali Gangji    schedule 12.09.2011