【发布时间】:2014-10-16 19:59:12
【问题描述】:
我在这里的第一个问题,如果之前有人问过这个问题和/或我犯了一些新手错误,请接受我的歉意!
我正在尝试通过一个简单的练习来了解 EmberJS。我正在尝试创建一个关键字列表,并且我的基本功能正常工作。我希望允许用户在商店中输入逗号分隔的关键字列表,但是,如果关键字重复,请发出警报。
所以我有一个带有 Actions 对象的 ArrayController,其中我有一个 createKeyword 函数。
createKeyword: function() {
// Get the keyword title set by the "New Keyword" text field
var entered_value = this.get('newKeyword');
if (!entered_value) { return false; }
if (!entered_value.trim()) { return; }
var entered_values = entered_value.split(",");
for ( var i=0; i<entered_values.length; i++){
var value = entered_values[i];
value = value.replace(/\+|"|'/g," ");
if ( ! value.trim() ){
continue;
}
value = value.toUpperCase();
alert( "Prior addition:" + this.get('length'));
// Prevent duplicates being added
if ( this.findBy('keyword',value) === undefined ) {
// Create the new Keyword model
var keyword = this.store.createRecord('keyword', {
value: value,
weighting: 1,
isNew: true
});
// Save the new model
keyword.save();
alert( "post addition:" + this.get('length') );
}
else {
alert( "Keyword [" + value + "] already defined");
}
}
// Clear the "New Keyword" text field
this.set('newKeyword', '');
}
我有几个警报 - 一个在我检查值之前显示数组控制器的长度,然后在商店中创建记录,然后一个。所以我用 3 条记录运行它,比如“tom”、“dick”、“harry”,如果我在其中添加“fred”,第一个警报是 3,第二个警报也是 3,然后出现 fred。
我对为什么第二个警报显示 3 而不是 4 感到困惑 - 我假设(可能不正确)arrayController 尚未使用新记录进行更新。
其次,如果我重新启动然后尝试添加 fred,dick 作为输入,两者都会被添加,我会认为应该添加 fred 而 dick 被拒绝,因为它是重复的。
提前感谢您的任何建议。
乔恩
【问题讨论】:
标签: javascript arrays ember.js store