我想知道状态中某个状态的数据字段是否继承自其父状态。例如,
$stateProvider.state('parent', {
data:{
customData1: "Hello",
}
})
.state('parent.child', {
data:{
}
});
这里,子状态(parent.child)没有定义自定义数据。它从其父(父)继承CustomData1。我想知道parent.child中的数据是否是继承的。但是我不想做像
这样的事情if(parent.child.data.customData1==parent.data.customData1)
{
}
有没有其他方法可以找到这个?
答案 0 :(得分:0)
我不确定,你的问题究竟是什么......我已经尝试解释它是如何运作的:
我创建了一个plunker,展示了它如何为您服务。
让我们拥有这些状态。首先是一些父母/孩子 - 孩子覆盖所有
.state('parent', {
url: '/parent',
templateUrl: 'tpl.html',
controller: 'controllerParent',
data:{
customData1: "Hello",
customData2: "World!"
}
})
.state('parent.child', {
url: '/child',
templateUrl: 'tpl.child.html',
controller: 'controllerChild',
data:{
customData1: "Goodbye",
customData2: "Problems"
}
});
还有一些其他的父母。 customData1在此处未更改
// Start
.state('other', {
url: "/other",
templateUrl: 'tpl.html',
controller: 'controllerParent',
data:{
customData1: "Hello",
customData2: "Other World!"
}
})
.state('other.child', {
url: "/child",
templateUrl: 'tpl.child.html',
controller: 'controllerChild',
data:{
customData2: "UI-Router!"
}
})
所以我们可以看到,paren.child根本不匹配自定义数据,其他匹配至少是customData1。因此,如果父数据键和子数据键匹配,则此检查将始终给出答案:
$scope.isSame = function(dataKey){
var childData = $state.current.data;
var parentData = $state.$current.parent.data;
return childData[dataKey] === parentData[dataKey];
};
并且那个掠夺者使用它:
{{isSame('customData2')}}
检查here