Это мой html-код
<select style="width:100px;" data-nodrag ng-model="conditions" ng-change="changingCondition(this)">
<option value="and">and</option>
<option value="or">or</option>
</select>
и это мой код ng-change
который я пробовал, но он не работает, если у меня есть несколько "и", это изменит их все на "или", этого не должно произойти
$scope.changingCondition = function (scope) {
var cond = $scope.conditions
//var jsonstr = JSON.stringify($scope.data);
//var new_jsonstr = jsonstr.replace("and", "or");
var obj = JSON.parse($scope.data)[0];
obj.cond = obj.and;
delete obj.cond;
}
Это мой jsonObject
[{
"and": [{
"fieldName": "",
"value": "",
"condition": ""
}]
}];
Если выбрано "или" jSonObject должен превышать значение "или" от "и", и если я изменил его на "и" он должен быть "и"
Все еще не может понять, что именно вы хотите, но попробуйте это:
HTML:
<div ng-app="myApp" ng-controller="myCtrl">
<select style="width:100px;" data-nodrag ng-model="conditions" ng-change="changingCondition()">
<option value="and">and</option>
<option value="or">or</option>
</select>
{{data}}
</div>
JS:
angular.module('myApp', [])
.controller('myCtrl', function ($scope) {
$scope.changingCondition = function () {
$scope.data = [{
"and": [{
"fieldName": "",
"value": "",
"condition": ""
}]
}];
if ($scope.conditions === 'or') {
$scope.data[0].or = $scope.data[0].and;
delete $scope.data[0].and;
}
}
});
Из вашего вопроса не совсем ясно, чего вы хотите достичь, но заметная проблема заключается в том, что ваш код устанавливает литеральное свойство "cond"
вместо значения $scope.conditions
. Вам нужно получить доступ к свойству с помощью obj[cond]
. Вот пример Plunkr.
and
свойствоor
когда "или" выбрано и наоборот?