使用以下代码:
public class Person {
private Long id;
private String name;
private List<Dog> dogs;
}
public class Dog {
private Long id;
private Long oldId;
private Long age;
}
我有2个Person对象,'person'和'editedPerson'。我想比较两者,如果一个属性不同,则更改元素的类并创建一个显示另一个对象属性值的工具提示。我希望能够在ng-repeat中执行此操作,根据他们的id / oldId比较人员列表中的Dog属性(将ng-repeat中的狗与具有与dog的id相同oldID的狗进行比较)< / p>
这是我迄今为止所做的一个例子:
<b ng-class="{ 'different' : person.name != editedPerson.name)}"
tooltip="{{(person.name != editedPerson.name) ? 'New: ' + editedPerson.name : ''}}">
Name:</b>
<p>{{person.name}}</p>
问题在于我将拥有很多属性,其中一些属于不同类型的列表。到目前为止,我对List的解决方法是为每个属性创建一个函数,例如
compareDogAge = function(dog, dogs) {
// Foreach on dogs until dogs[i].oldId == dog.id, return true if age is equal
}
我想知道我是否应该保留当前的解决方案,或者尝试制定/找到可以解决我的问题的指令(我对制定指令的经验很少)。
提前致谢
修改 的
到目前为止,我提出了以下功能,但尚未对其进行测试
equals = function(fieldName, originalObj, newObj) {
if (newObj instanceof Array) {
for (var i = 0; i < newObj.length; i++) {
if (originalObj.id == newObj[i].oldId) {
return originalObj[fieldName] == newObj[i][fieldName];
}
}
} else if (newObj instanceof Object){
return originalObj[fieldName] == newObj[fieldName];
}
}
我仍然认为指令会更好
答案 0 :(得分:1)
Angular有一个等于的功能,不是你想要的吗?
https://docs.angularjs.org/api/ng/function/angular.equals
@echo off
SETLOCAL ENABLEEXTENSIONS
echo Verify .Net Framework Version
for /f "delims=" %%I in ('dir /B /A:D %windir%\Microsoft.NET\Framework') do (
for /f "usebackq tokens=1,3 delims= " %%A in (`reg query "HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\%%I" 2^>nul ^| findstr Install`) do (
if %%A==Install (
if %%B==0x1 (
echo %%I
)
)
)
)
echo Do you see version v4.5.2 or greater in the list?
pause
ENDLOCAL
修改强>
指令确实将此逻辑添加到您的组件中,如下所示:
HTML
2^>nul
角
angular.equals(person, editedPerson);