Sam*_*tar 27 javascript lodash
我有一个变量selectedSubTopicId,我有一个subTopic对象数组:objectiveDetail.subTopics[].每个subTopic 对象都有一个字段 subTopicId
我想用它来启用或禁用和添加主题按钮.我是否可以在ng-disabled中使用lodash来测试此数组,如果数组中的任何subTopic对象元素具有subTopicId等于的数组,则报告为true selectedSubTopicId.
这是objectiveDetail中的数据示例.在这种情况下,subTopics数组中只有一个元素.
{"objectiveDetailId":285,
"objectiveId":29,
"number":1,
"text":"x",
"subTopics":[{"subTopicId":1,
"number":1}]
}
Run Code Online (Sandbox Code Playgroud)
这是我的角度控制器中由thefourtheye建议的代码:
$scope.checkDuplicateSubTopicId = function (objectiveDetail, sSubTopic) {
if (_.some(objectiveDetail.subTopics, function(currentTopic) {
return _.contains(currentTopic, selectedSubTopicId);
})) {
return true;
} else {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
单击功能未显示的我的按钮如下所示:
<button data-ng-disabled="checkDuplicateSubTopicId(objectiveDetail, subTopicId)">
Add Topic
</button>
Run Code Online (Sandbox Code Playgroud)
问题是它不能正常工作,按钮不显示禁用.
Fel*_*ing 46
你没有要求怎么做,但我认为这是你想知道的.
正如我已经提到的,你可以使用_.some,它将迭代数组中的每个元素并执行回调.在该回调中,您可以测试主题属性的值是否等于变量的值:
var result = _.some(objectiveDetail.subTopics, function (topic) {
return topic.subTopicId === selectedSubTopicId;
});
Run Code Online (Sandbox Code Playgroud)
_.some如果找到其中返回回调的元素,将跳过剩余的元素true.
Kir*_*ril 18
还有一些更优雅的形式:
var result = _.some(objectiveDetail.subTopics, {subTopicId: selectedSubTopicId});
Run Code Online (Sandbox Code Playgroud)