我试图在Backbone Stickit中使用Backbone Validation,我希望在用户输入时一次验证一个属性.但是,当用户输入值时,模型上的所有属性都会得到验证,而不仅仅是用户已更改的属性.我究竟做错了什么?
我的看法:
bindings:{
'#username' : {
observe:'username',
setOptions: {
validate:true
}
},
'#email' : {
observe:'email',
setOptions: {
validate:true
}
},
'#firstname' : {
observe:'firstName',
setOptions: {
validate:true
}
},
.......
onShow: function(){
Backbone.Validation.bind(this, {
valid: function(view, attr) {
alert('VALID - ' + attr);
},
invalid: function(view, attr, error) {
alert('INVALID - ' + attr);
}
});
this.stickit();
},
Run Code Online (Sandbox Code Playgroud) 我正在尝试搜索特定元素,因此我在我的选项中有一个可搜索表达式.我还想按这个元素的值排序,所以我在value元素上创建了一个元素范围索引.以下是我的搜索选项,希望能让事情变得清晰:
<options xmlns="http://marklogic.com/appservices/search">
<term>
<term-option>case-insensitive</term-option>
</term>
<debug>true</debug>
<searchable-expression>/summary/name/value</searchable-expression>
<sort-order type="xs:string" direction="ascending">
<element ns="" name="value"/>
<annotation>options for search institutions by name</annotation>
</sort-order>
</options>
Run Code Online (Sandbox Code Playgroud)
问题是当它进行排序时它会添加另一个值节点(取自搜索:report id ="SEARCH-FLWOR")
...order by xs:string(($result//value)[1]) ascending return $result)[1 to 50]
Run Code Online (Sandbox Code Playgroud)
代替:
...order by xs:string(($result)[1]) ascending return $result)[1 to 50]
Run Code Online (Sandbox Code Playgroud)
我如何阻止它这样做?我无法更改可搜索的表达式,因为"name"元素具有另一个我不想搜索的子元素.我也不能将sort-order元素名称留空或将其设置为当前节点.看起来这很简单,但我还没有找到任何工作.
非常感谢帮助.