我试图在一个属性等于html select option值的集合中找到一个模型。

<div id="hospital-details">
    <select name="hospitalnames">
       <option><%- model.get('name') %></option>
    </select>
</div>

每当更改医院名称时,都会触发jquery change回调以找到具有所选选项值作为属性值的locationModel,如下所示,
$('select[name="hospitalnames"]').change(function() {
   var name =  $(this).val();
   locationListCollection.each(function(locationModel) {
     if ($.trim(locationModel.get('name')) == $.trim(name)) {
        that.locationModel = locationModel;
        return false; // control is returned to underscore.min.js
     }
   });
});
console.log(that.locationModel); // this is not being displayed at all

找到具有属性的locationModel之后,我无法退出循环。有什么帮助吗?这时我已经调查了
this,但没有成功。

最佳答案

如果要搜索第一个匹配项,则使用错误的方法。集合中有很多Underscore methods mixed in,特别是它们中混合了 find :



像这样:

var name = $.trim($(this).val());
that.locationModel = locationListCollection.find(function(locationModel) {
  return $.trim(locationModel.get('name')) == name;
});

如果模型中的name是预先修剪好的并且干净整洁,则可以使用 findWhere :



像这样:
var name = $.trim($(this).val());
that.locationModel = locationListCollection.findWhere({ name: name });

顺便说一句,这:
console.log(locationModel);

不会给你任何东西,因为locationModelthat.locationModel是不同的东西。

09-27 01:29