Ant*_*edo 24 javascript angularjs
我有一个模型,它是一个需要处理复杂和简单元素的数组:
{
"object" :[
"element1.html",
"element2.html",
{
"url:"element3.html",
"title" : "Title 3"
},
"element4.html",
"element5.html"
]
}
Run Code Online (Sandbox Code Playgroud)
有没有办法制作一个可以处理angularjs中简单和复杂元素的选择(显示复杂的url)?
方法1
我的意思是这样的:
ng-model="(object[$index].url ? object[$index].url : object[$index])"
Run Code Online (Sandbox Code Playgroud)
方法2
创建一个规范化对象,该对象具有每个对象的复杂结构,其中包含空数组和指示是简单还是复杂的文件类型.
我可以用角度制作一些魔法来避免第二种方法吗?
谢谢!
Kon*_*ass 20
您可以使用ngSwitch或ngIf放置正确的元素.
以ngIf为例:
<input ngIf="object[$index].url" ngModel="object[$index].url">
<input ngIf="!object[$index].url" ngModel="object[$index]">
Run Code Online (Sandbox Code Playgroud)
如果不满足条件,角度将完全移除dom元素,直到条件满足为止.
lag*_*lex 14
您可以在对象上定义getter和setter,并在其中放置逻辑以检索/设置您想要有条件地获取/修改的任何其他对象.
Angular有一个ng-model-options="{getterSetter:true}"你可以使用如下:
input(ng-model="data" ng-model-options="{getterSetter:true}")
Run Code Online (Sandbox Code Playgroud)
var data1 = "data 1";
var data2 = "data 2";
$scope.data = function(newVal) {
if (condition) {
if (angular.isDefined(newVal))
data1 = newVal;
return data1;
} else {
if (angular.isDefined(newVal))
data2 = newVal;
return data2;
}
};
Run Code Online (Sandbox Code Playgroud)
但是,这可能只是在我的情况下,它本身并没有按预期工作或没有.
还有JavaScript的默认方式来使用相同的 Object.defineProperty
var data1 = "data 1";
var data2 = "data 2";
Object.defineProperty($scope, 'data', {
get: function() {
if(condition)
return data1;
else
return data2;
},
set: function(newVal) {
if(condition)
data1 = newVal;
else
data2 = newVal;
}
});
Run Code Online (Sandbox Code Playgroud)
同样,这可能只是在我的情况下,但仅使用它们中的任何一个都不起作用或没有按预期工作.所以我把它们放在一起使用它完美无缺.
| 归档时间: |
|
| 查看次数: |
30868 次 |
| 最近记录: |