Javascript 将表达式从模板移动到控制器
我有以下控制器Javascript 将表达式从模板移动到控制器,javascript,angularjs,json,controller,Javascript,Angularjs,Json,Controller,我有以下控制器 .controller('retrieveSummaryData', [ '$scope', '$http', '$log', function ($scope, $http, $log) { $scope.url = 'data/sub1_example.json'; $scope.search = function(){ angular.element('body').addClass('loading'); $scope.to
.controller('retrieveSummaryData', [ '$scope', '$http', '$log', function ($scope, $http, $log) {
$scope.url = 'data/sub1_example.json';
$scope.search = function(){
angular.element('body').addClass('loading');
$scope.total = 0; // reset the scope total
$http.get($scope.url) // get json data
.success(function(data, status, headers, config) {
$scope.dataList = data;
angular.element('.downloadFile').removeClass('disabled');
angular.element('.colHeader').removeClass('hidden');
angular.element('body').removeClass('loading');
console.log(data);
}).error(function(error, status, headers, config) {
console.log(status);
});
}
}])
在我的模板中,我有以下内容:
<li ng-repeat="data in dataList" class="outputData">
<ul class="clearfix">
....
<li class="col-md-1 sign">{{data.signage}}</li>
<li class="col-md-1 sign" ng-class="{valid: data.signage == '+-' || data.balance > 0 && data.signage == '+', invalid: data.balance < 0 && data.signage == '+' // etc}"></li>
</ul>
</li>
如果我执行$scope.dataList[0].signage
,我将获得数组中的第一项。我需要在这里写一个循环吗
我的json的一部分示例
[
{
"entity":"C-2919",
"entity_desc":"A & L CF June (3) Limited",
"account":"S1710008",
"account":"9706250",
"account_desc":"CT asset CY tfr group relief",
"l700_code":"R001000",
"l700_acc_desc":"S1710008 Corporation tax current yr - group relief settlemen",
"signage":"-",
"balance":0.00
},
{
"entity":"C-2919",
"entity_desc":"A & L CF June (3) Limited",
"account":"S1710010",
"walker_account":"9706204",
"walker_account_desc":"CORP TAX PY - B/F",
"l700_code":"R001004",
"l700_acc_desc":"S1710010 Corporation tax prior year - b/f",
"signage":"+",
"balance":376949.00
}, // etc
在控制器中
$scope.IsValid = function(data){
return data.signage == '+-' || data.balance > 0 && data.signage == '+';
}
$scope.IsInvalid = function(data){
return data.balance < 0 && data.signage == '+';
}
添加一个方法
$scope.getClass = function(item) {
var clss;
// You can put your expression in this function
// data.signage == '+-' || data.balance > 0 && data.signage == '+', invalid: data.balance < 0 && data.signage == '+'
if(item.signage == '+' || item.signage == '+-') {
clss = 'valid';
} else if(item.signage == '-') {
clss = 'invalid';
}
return clss;
}
$scope.getClass=函数(项){
var-clss;
//您可以将表达式放入此函数中
//data.signage='+-'| | data.balance>0&&data.signage='+',无效:data.balance<0&&data.signage=='+'
如果(item.signage=='+'| | item.signage=='+-')){
clss=‘有效’;
}否则,如果(item.signage='-'){
clss='无效';
}
返回clss;
}
在你的html中
<li ng-repeat="data in dataList" class="outputData">
<ul class="clearfix">
....
<li class="col-md-1 sign">{{data.signage}}</li>
<li class="col-md-1 sign" class="{{getClass(data)}}"></li>
</ul>
</li>
....
- {{data.signage}
您将在控制器中获得基于表达式的适当类。
$scope.IsValid = function(data){
return data.signage == '+-' || data.balance > 0 && data.signage == '+';
}
$scope.IsInvalid = function(data){
return data.balance < 0 && data.signage == '+';
}
添加一个方法
$scope.getClass = function(item) {
var clss;
// You can put your expression in this function
// data.signage == '+-' || data.balance > 0 && data.signage == '+', invalid: data.balance < 0 && data.signage == '+'
if(item.signage == '+' || item.signage == '+-') {
clss = 'valid';
} else if(item.signage == '-') {
clss = 'invalid';
}
return clss;
}
$scope.getClass=函数(项){
var-clss;
//您可以将表达式放入此函数中
//data.signage='+-'| | data.balance>0&&data.signage='+',无效:data.balance<0&&data.signage=='+'
如果(item.signage=='+'| | item.signage=='+-')){
clss=‘有效’;
}否则,如果(item.signage='-'){
clss='无效';
}
返回clss;
}
在你的html中
<li ng-repeat="data in dataList" class="outputData">
<ul class="clearfix">
....
<li class="col-md-1 sign">{{data.signage}}</li>
<li class="col-md-1 sign" class="{{getClass(data)}}"></li>
</ul>
</li>
....
- {{data.signage}
您将获得基于表达式的适当类。您可以创建两个方法并将
数据作为参数传递
<li class="col-md-1 sign" ng-class="{valid: IsValid(data), invalid: IsInvalid(data) // etc}"></li>
和在控制器上
$scope.IsValid = function(data){
return data.signage == '+-' || data.balance > 0 && data.signage == '+';
}
$scope.IsInvalid = function(data){
return data.balance < 0 && data.signage == '+';
}
$scope.IsValid=函数(数据){
返回data.signage='+-'| | data.balance>0&&data.signage=='+';
}
$scope.IsInvalid=函数(数据){
返回data.balance<0&&data.signage=='+';
}
您可以创建两个方法并将数据作为参数传递
<li class="col-md-1 sign" ng-class="{valid: IsValid(data), invalid: IsInvalid(data) // etc}"></li>
和在控制器上
$scope.IsValid = function(data){
return data.signage == '+-' || data.balance > 0 && data.signage == '+';
}
$scope.IsInvalid = function(data){
return data.balance < 0 && data.signage == '+';
}
$scope.IsValid=函数(数据){
返回data.signage='+-'| | data.balance>0&&data.signage=='+';
}
$scope.IsInvalid=函数(数据){
返回data.balance<0&&data.signage=='+';
}
您可以添加函数以返回布尔值
$scope.validQuery = function (data) {
return (data.signage === '+-' || data.balance > 0 && data.signage == '+');
}
$scope.invalidQuery = function (data) {
return (data.signage === '-' && data.balance < 0);
}
可以添加函数以返回布尔值
$scope.validQuery = function (data) {
return (data.signage === '+-' || data.balance > 0 && data.signage == '+');
}
$scope.invalidQuery = function (data) {
return (data.signage === '-' && data.balance < 0);
}
谢谢,我对这个答案投了票,它在其他方面也帮助了我。谢谢,我对这个答案投了票,它在其他方面也帮助了我。