我有一个绑定到集合的select元素:
import copy
df = copy.deepcopy(turnstile_data)
pdf = df.shift(periods=1)
df['ENTRIESn_hourly'] = df['ENTRIESn'] - pdf['ENTRIESn'].fillna(0)
df['EXITSn_hourly'] = df['EXITSn'] - pdf['EXITSn'].fillna(0)
df['Interval'] = pdf['TIMEn']+'-'+ df['TIMEn'].fillna(0)
df.loc[(df['ENTRIESn'] == 0), 'ENTRIESn_hourly'] = 0
df.loc[(df['EXITSn'] == 0), 'EXITSn_hourly'] = 0
df.loc[(df['C/A'] != pdf['C/A']) | (df['UNIT'] != pdf['UNIT']) | (df['SCP'] != pdf['SCP']), ['ENTRIESn_hourly', 'EXITSn_hourly','Interval']] = 0
df = df[df.Interval != 0]
print df.head(20)
head7=copy.deepcopy(df)
required_df=head7[['UNIT','EXITSn_hourly','Interval']].groupby(head7.UNIT)
print required_df.head(5)
monthlyBudgetRowTypes 是Row类中的observableArray:
在该类中有一个名为 selectedTypeId 的可观察对象。 它代表所选的选项值。
我在Row类中有一个名为 selectedTypeText 的计算observable,它代表选项文本。 只要 selectedTypeId 发生更改,其文本就会发生变化。
<select data-bind="options: $data.monthlyBudgetRowTypes, optionsValue: 'key', optionsText: 'name', value: $data.selectedTypeId"></select>
我有一个临时数组,我将行添加到:
function Row() {
this.monthlyBudgetRowTypes = ko.observableArray([]);
this.selectedTypeId = ko.observable();
this.selectedTypeText = ko.computed(function (ev) {
if (this.selectedTypeId()) {
var itemType = this.monthlyBudgetRowTypes().filter(function (elem, i, temp) {
return elem.key() == this.selectedTypeId();
}.bind(self));
if (itemType.length > 0) {
return itemType[0].name();
}
}
}, this);
}
在我添加完所有行后,我将temp数组添加到实际行数组中 - observablearray。
row = new model.IncomeRow();
row.monthlyBudgetRowTypes(incomeTypes);
row.amount(item.IncomeAmount);
row.date(item.IncomeDate);
row.selectedTypeId(item.IncomeName);
row.accountKey(item.MonthlyIncomeKey);
row.datepickerID = 'inc_' + item.MonthlyIncomeKey;
tempTableRows.push(row);
我不明白的是,所选文本项被绑定2次。 第一次使用正确的值。但是当我将temp数组中的所有项添加到observableArray中时,select元素将被绑定,并且所有值都将获得下拉列表中的第1项。
以下是我的观点:
incomeRows(tempTableRows);
我该如何避免呢?
答案 0 :(得分:0)
您的optionsValue绑定是“key”,但是在构建Row时,您使用ItemName设置selectedTypeId,用作optionsText而不是optionsValue。
答案 1 :(得分:0)
好吧,这很愚蠢,但我发现了问题。我有两个表,每个表中的每一行都有自己的类型集合。显然我把错误的类型添加到了错误的集合中。 无论如何,它是我身边的纯编码错误。