如何在foreach循环中创建临时变量...
AuthenticationFailed
我不想使用计算值和observables它是JS对象。
答案 0 :(得分:0)
使用计算属性制作视图模型,即使您不想这样做。
在视图中修改数据的唯一方法是编写自定义绑定,或者找到一种在常规绑定中执行代码的hacky方法。例如,如果您不想为普通对象创建视图模型,则需要将计算逻辑放在foreach
绑定中。 (非常难看!)
在下面的示例中,我将data
转换为foreach
在视图中计算的内联中使用的$context
。在计算中,您可以访问绑定上下文($parent
)及其中的所有内容(如$parent
)。你想做的所有事情(但不应该)都可以。
word_translated
图层(此时,只是数据上下文)item.word_translated
)
ko.applyBindings({
translations: {
en: {
"tree": "tree",
"house": "house"
},
nl: {
"tree": "boom",
"house": "huis"
}
},
language: ko.observable("en"),
languages: ["en", "nl"],
words: [{
index: 0,
word: "house"
},
{
index: 1,
word: "tree"
}
]
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
Language: <select data-bind="options: languages, value: language">
</select>
<ul data-bind="foreach: { data: ko.computed(function() {
return words.map(function(item) {
return Object.assign({}, item, {
word_translated: translations[language()][item.word]
})
})
}), as: 'item' }">
<li>
<strong data-bind="text: item.index +': '"></strong>
<span data-bind="text: item.word_translated"></span>
</li>
</ul>
&#13;
dataSource.setDriverClassName("oracle.jdbc.driver.OracleDriver");
dataSource.setJdbcUrl("jdbc:oracle:thin:@server01.intranet:1521/SERVER1")
&#13;
答案 1 :(得分:0)
这就是你要找的东西:
modelName: Ember.computed('modelName',
return this.get('modelName').map((o, i) => {
return (i > 0 ? ' ' : '') + o.get('prop1') + '-' + o.get('prop2');
});
})
答案 2 :(得分:0)
除非我弄错了,否则你可以在子范围内使用文字名称:
<!-- ko foreach: { data: question, as: 'question' }-->
<!-- ko foreach: { data: question.answers, as: 'answer' }-->
<span data-bind="text: question.lang ? answer[question.lang + '_name'] : answer.name">
<!-- /ko -->
<!-- /ko -->
IMO这个代码更好地进入answer
对象内的函数:
function getLocalizedText(question) {
return question.lang ? this[question.lang + '_name'] : this.name;
}
所以标记看起来像
<!-- ko foreach: { data: question, as: 'question' }-->
<!-- ko foreach: { data: question.answers, as: 'answer' }-->
<span data-bind="text: answer.getLocalizedText(question)">
<!-- /ko -->
<!-- /ko -->