为什么我的 ng-show 不能与 <img> 一起使用?
Why is my ng-show not working with <img>?
我无法让我的 ng-show 显示基于函数 return 的图像。它应该 return 不同的图像,如果它是 true、false 或 null。
如果你不能解决我的问题,你能告诉我正确的方向吗?
如果您能看看 html 代码中的语法,我将不胜感激,它在 chrome 调试控制台中抛出 25 个错误:
Error: [$parse:syntax] http://errors.angularjs.org/1.6.4/$parse/syntax?p0=%7B&p1=invalid%20key&p2=…%3D%3D%20'true'&p4=%7BisAttending(student.id%2Clesson.id)%20%3D%3D%20'true'
at angular.js:38
at s.throwError (angular.js:15090)
at s.object (angular.js:15079)
at s.primary (angular.js:14968)
at s.unary (angular.js:14956)
at s.multiplicative (angular.js:14943)
at s.additive (angular.js:14934)
at s.relational (angular.js:14925)
at s.equality (angular.js:14916)
at s.logicalAND (angular.js:14908) "<div ng-show="{{isAttending(student.id,lesson.id) == 'true'">"
是isAttending函数,代码如下:
<!DOCTYPE html>
<html>
<head>
<script
src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
<script src="controller.js"></script>
<link rel="stylesheet" type="text/css" href="style.css">
<link href="https://fonts.googleapis.com/css?family=Overpass"
rel="stylesheet">
</head>
<body>
<div ng-app="geisonApp" ng-controller="myCtrl">
<div id="um"
style="margin-left: auto; margin-right: auto; width: 60%; text-decoration: none; font-size: 12px; font-weight: 100;">
<div>
<ul id="dois">
<li><a href="#"> <img
style="padding-left: 0px; padding-top: 16px; margin-top: -29px; margin-left: -25px;"
src="Untitled.png">
</a></li>
<li><a href="#">CURSOS</a></li>
<li><a href="#">CALENDÁRIO</a></li>
<li><a href="#">GRUPOS DE DISCUSSÃO </a></li>
</ul>
</div>
<div style="float: right; margin-top: -71px;">
<p style="position: relative; top: -10px; display: inline">Jaime
Schettini</p>
<img
style="padding-left: 10px; padding-top: 16px; padding-right: 11px;"
src="checked.png"> <img
style="padding-left: 0px; padding-top: 16px; padding-right: 11px;"
src="checked.png">
</div>
</div>
<div
style="background-color: #5cc8ec; width: 100%; color: white; font-weight: bold; font-size: 14px; height: 60px; font-family: arial; margin-top: -10px;">
<span
style="margin-left: 20% !important; margin-top: 25px; position: absolute; margin-left: 10px;">
Matemática 6 Série - Frequência </span>
</div>
<br>
<table style="margin-left: auto; margin-right: auto; width: 60%;">
<tbody>
<tr>
<td
style="width: 40%; border-top: 1px solid white; border-left: 1px solid white;">
<div
style="margin-left: 75%; margin-top: -2px; margin-bottom: -3px;">
<img src="play-button.png"
style="border: 1px solid #ebebeb; padding: 3px; margin-left: 17px;">
<img src="play-button.png"
style="border: 1px solid #ebebeb; padding: 3px; margin-left: -8px;">
</div>
</td>
<td ng-repeat="lesson in lessons">{{lesson.id}}</td>
</tr>
<tr>
<td style="width: 40%;"></td>
<td ng-repeat="lesson in lessons"><img
style="padding-left: 10px; padding-top: 16px; padding-right: 11px; padding-bottom: 10px; padding-bottom: 10px;"
src="unchecked.png"></td>
</tr>
<tr ng-repeat="student in students">
<td><img
style="padding-left: 10px; padding-top: 16px; padding-right: 11px; padding-bottom: 10px; padding-bottom: 10px;"
src="checked.png">
<p class="ng-binding"
style="display: inline; top: -23px; position: relative; font-family: 'Overpass', sans-serif; font-size: 15px; color: grey;">
{{student.name}}</p></td>
<td ng-repeat="lesson in lessons">
<p>{{isAttending(student.id,lesson.id)}}</p>
<div ng-show="{{isAttending(student.id,lesson.id) == 'true'">
<img id="imgChecked" ng-src="checked.png">
</div>
<!-- <img id="imgUnchecked" ng-show="{{isAttending(student.id,lesson.id)}} == 'false'" ng-src="unchecked.png"> -->
<!-- <img id="imgEmpty" ng-show="{{isAttending(student.id,lesson.id)}} == 'null'" ng-src="empty.png"> -->
</td>
</tr>
</tbody>
</table>
</div>
var app = angular.module("geisonApp", []);
app.controller("myCtrl", function($scope) {
$scope.students = [ {
"id" : 15,
"username" : "jaime",
"email" : "jaime",
"name" : "Jaime",
"photo" : null
}, {
"id" : 31,
"username" : "carol@gmail.com",
"email" : "carol@gmail.com",
"name" : "Carol",
"photo" : null
}, {
"id" : 48,
"username" : "c@gmail.com",
"email" : "c@gmail.com",
"name" : "Cleberson Charles Colombo Faccin",
"photo" : null
}, {
"id" : 22840,
"username" : "r@email.com",
"email" : "r@email.com",
"name" : "Rodrigo",
"photo" : null
}, {
"id" : 29020,
"username" : "c@email.com",
"email" : null,
"name" : "Caio",
"photo" : null
} ];
$scope.lessons = [ {
"id" : 59,
"startDate" : 1456826400000,
"endDate" : 1456830000000
}, {
"id" : 60,
"startDate" : 1456999200000,
"endDate" : 1457002800000
}, {
"id" : 61,
"startDate" : 1457431200000,
"endDate" : 1457434800000
}, {
"id" : 62,
"startDate" : 1457604000000,
"endDate" : 1457607600000
}, {
"id" : 63,
"startDate" : 1458036000000,
"endDate" : 1458039600000
} ];
$scope.attendances = [ {
"id" : 6,
"lesson" : {
"id" : 58
},
"present" : true,
"user" : {
"id" : 15
}
}, {
"id" : 819368,
"lesson" : {
"id" : 59
},
"present" : true,
"user" : {
"id" : 15
}
}, {
"id" : 819367,
"lesson" : {
"id" : 59
},
"present" : true,
"user" : {
"id" : 48
}
}, {
"id" : 967272,
"lesson" : {
"id" : 62
},
"present" : null,
"user" : {
"id" : 15
}
}, {
"id" : 967273,
"lesson" : {
"id" : 62
},
"present" : null,
"user" : {
"id" : 31
}
}, {
"id" : 967274,
"lesson" : {
"id" : 62
},
"present" : null,
"user" : {
"id" : 48
}
}, {
"id" : 967275,
"lesson" : {
"id" : 62
},
"present" : false,
"user" : {
"id" : 22840
}
}, {
"id" : 967276,
"lesson" : {
"id" : 62
},
"present" : null,
"user" : {
"id" : 29020
}
}, {
"id" : 4,
"lesson" : {
"id" : 63
},
"present" : true,
"user" : {
"id" : 15
}
}, {
"id" : 5,
"lesson" : {
"id" : 64
},
"present" : false,
"user" : {
"id" : 15
}
}, {
"id" : 16,
"lesson" : {
"id" : 65
},
"present" : true,
"user" : {
"id" : 15
}
}, {
"id" : 17,
"lesson" : {
"id" : 66
},
"present" : false,
"user" : {
"id" : 15
}
}, {
"id" : 967232,
"lesson" : {
"id" : 66
},
"present" : true,
"user" : {
"id" : 29020
}
}, {
"id" : 664012,
"lesson" : {
"id" : 67
},
"present" : true,
"user" : {
"id" : 15
}
}, {
"id" : 664013,
"lesson" : {
"id" : 67
},
"present" : true,
"user" : {
"id" : 31
}
}, {
"id" : 664014,
"lesson" : {
"id" : 67
},
"present" : true,
"user" : {
"id" : 48
}
}, {
"id" : 664015,
"lesson" : {
"id" : 67
},
"present" : true,
"user" : {
"id" : 22840
}
}, {
"id" : 664016,
"lesson" : {
"id" : 67
},
"present" : true,
"user" : {
"id" : 29020
}
}, {
"id" : 664007,
"lesson" : {
"id" : 68
},
"present" : false,
"user" : {
"id" : 15
}
}, {
"id" : 664008,
"lesson" : {
"id" : 68
},
"present" : false,
"user" : {
"id" : 31
}
}, {
"id" : 664009,
"lesson" : {
"id" : 68
},
"present" : false,
"user" : {
"id" : 48
}
}, {
"id" : 664010,
"lesson" : {
"id" : 68
},
"present" : false,
"user" : {
"id" : 22840
}
}, {
"id" : 664011,
"lesson" : {
"id" : 68
},
"present" : false,
"user" : {
"id" : 29020
}
}, {
"id" : 305303,
"lesson" : {
"id" : 90
},
"present" : false,
"user" : {
"id" : 15
}
}, {
"id" : 305302,
"lesson" : {
"id" : 90
},
"present" : false,
"user" : {
"id" : 31
}
}, {
"id" : 305306,
"lesson" : {
"id" : 90
},
"present" : false,
"user" : {
"id" : 22840
}
}, {
"id" : 305307,
"lesson" : {
"id" : 90
},
"present" : false,
"user" : {
"id" : 29020
}
} ];
$scope.isAttending = function(studentId, lessonId) {
var coisa;
$scope.attendances.forEach( function(arrayItem){
if(arrayItem.lesson.id === lessonId){
if(arrayItem.user.id === studentId){
// console.log(arrayItem.user.id + "-" + arrayItem.lesson.id +" = " + arrayItem.present);
coisa = arrayItem.present;
}
}
});
return coisa;
// return studentId + "-" + lessonId;
}
});
CSS:
body {
margin:0;
}
div#um{
background-color: white;
}
ul#dois {
list-style-type: none;
margin: 0;
padding: 0;
overflow: hidden;
margin-top: 8px;
}
li a {
float: left;
display: block;
color: black;
text-align: center;
padding: 14px 16px;
text-decoration: none;
}
table, th, td{
border: 1px solid #ebebeb;
}
table{
border-collapse: collapse;
width: 100%;
}
th {
height: 50px;
}
img#imgUnchecked, #imgChecked{
padding-left: 10px; padding-top: 16px; padding-right: 11px;
}
你有错字
<div ng-show="isAttending(student.id,lesson.id)">
这是导致 angular 日志中出现错误的原因,请参阅最后一行
如果您希望 img 可见,isAttending
函数应该 return 为真
如果您看到错误,最后一行显示您的错误。
当你使用像 ng-show 这样的 angular 标签时,你不必使用花括号 {{
去掉大括号,它应该可以正常工作
我无法让我的 ng-show 显示基于函数 return 的图像。它应该 return 不同的图像,如果它是 true、false 或 null。
如果你不能解决我的问题,你能告诉我正确的方向吗?
如果您能看看 html 代码中的语法,我将不胜感激,它在 chrome 调试控制台中抛出 25 个错误:
Error: [$parse:syntax] http://errors.angularjs.org/1.6.4/$parse/syntax?p0=%7B&p1=invalid%20key&p2=…%3D%3D%20'true'&p4=%7BisAttending(student.id%2Clesson.id)%20%3D%3D%20'true'
at angular.js:38
at s.throwError (angular.js:15090)
at s.object (angular.js:15079)
at s.primary (angular.js:14968)
at s.unary (angular.js:14956)
at s.multiplicative (angular.js:14943)
at s.additive (angular.js:14934)
at s.relational (angular.js:14925)
at s.equality (angular.js:14916)
at s.logicalAND (angular.js:14908) "<div ng-show="{{isAttending(student.id,lesson.id) == 'true'">"
是isAttending函数,代码如下:
<!DOCTYPE html>
<html>
<head>
<script
src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
<script src="controller.js"></script>
<link rel="stylesheet" type="text/css" href="style.css">
<link href="https://fonts.googleapis.com/css?family=Overpass"
rel="stylesheet">
</head>
<body>
<div ng-app="geisonApp" ng-controller="myCtrl">
<div id="um"
style="margin-left: auto; margin-right: auto; width: 60%; text-decoration: none; font-size: 12px; font-weight: 100;">
<div>
<ul id="dois">
<li><a href="#"> <img
style="padding-left: 0px; padding-top: 16px; margin-top: -29px; margin-left: -25px;"
src="Untitled.png">
</a></li>
<li><a href="#">CURSOS</a></li>
<li><a href="#">CALENDÁRIO</a></li>
<li><a href="#">GRUPOS DE DISCUSSÃO </a></li>
</ul>
</div>
<div style="float: right; margin-top: -71px;">
<p style="position: relative; top: -10px; display: inline">Jaime
Schettini</p>
<img
style="padding-left: 10px; padding-top: 16px; padding-right: 11px;"
src="checked.png"> <img
style="padding-left: 0px; padding-top: 16px; padding-right: 11px;"
src="checked.png">
</div>
</div>
<div
style="background-color: #5cc8ec; width: 100%; color: white; font-weight: bold; font-size: 14px; height: 60px; font-family: arial; margin-top: -10px;">
<span
style="margin-left: 20% !important; margin-top: 25px; position: absolute; margin-left: 10px;">
Matemática 6 Série - Frequência </span>
</div>
<br>
<table style="margin-left: auto; margin-right: auto; width: 60%;">
<tbody>
<tr>
<td
style="width: 40%; border-top: 1px solid white; border-left: 1px solid white;">
<div
style="margin-left: 75%; margin-top: -2px; margin-bottom: -3px;">
<img src="play-button.png"
style="border: 1px solid #ebebeb; padding: 3px; margin-left: 17px;">
<img src="play-button.png"
style="border: 1px solid #ebebeb; padding: 3px; margin-left: -8px;">
</div>
</td>
<td ng-repeat="lesson in lessons">{{lesson.id}}</td>
</tr>
<tr>
<td style="width: 40%;"></td>
<td ng-repeat="lesson in lessons"><img
style="padding-left: 10px; padding-top: 16px; padding-right: 11px; padding-bottom: 10px; padding-bottom: 10px;"
src="unchecked.png"></td>
</tr>
<tr ng-repeat="student in students">
<td><img
style="padding-left: 10px; padding-top: 16px; padding-right: 11px; padding-bottom: 10px; padding-bottom: 10px;"
src="checked.png">
<p class="ng-binding"
style="display: inline; top: -23px; position: relative; font-family: 'Overpass', sans-serif; font-size: 15px; color: grey;">
{{student.name}}</p></td>
<td ng-repeat="lesson in lessons">
<p>{{isAttending(student.id,lesson.id)}}</p>
<div ng-show="{{isAttending(student.id,lesson.id) == 'true'">
<img id="imgChecked" ng-src="checked.png">
</div>
<!-- <img id="imgUnchecked" ng-show="{{isAttending(student.id,lesson.id)}} == 'false'" ng-src="unchecked.png"> -->
<!-- <img id="imgEmpty" ng-show="{{isAttending(student.id,lesson.id)}} == 'null'" ng-src="empty.png"> -->
</td>
</tr>
</tbody>
</table>
</div>
var app = angular.module("geisonApp", []);
app.controller("myCtrl", function($scope) {
$scope.students = [ {
"id" : 15,
"username" : "jaime",
"email" : "jaime",
"name" : "Jaime",
"photo" : null
}, {
"id" : 31,
"username" : "carol@gmail.com",
"email" : "carol@gmail.com",
"name" : "Carol",
"photo" : null
}, {
"id" : 48,
"username" : "c@gmail.com",
"email" : "c@gmail.com",
"name" : "Cleberson Charles Colombo Faccin",
"photo" : null
}, {
"id" : 22840,
"username" : "r@email.com",
"email" : "r@email.com",
"name" : "Rodrigo",
"photo" : null
}, {
"id" : 29020,
"username" : "c@email.com",
"email" : null,
"name" : "Caio",
"photo" : null
} ];
$scope.lessons = [ {
"id" : 59,
"startDate" : 1456826400000,
"endDate" : 1456830000000
}, {
"id" : 60,
"startDate" : 1456999200000,
"endDate" : 1457002800000
}, {
"id" : 61,
"startDate" : 1457431200000,
"endDate" : 1457434800000
}, {
"id" : 62,
"startDate" : 1457604000000,
"endDate" : 1457607600000
}, {
"id" : 63,
"startDate" : 1458036000000,
"endDate" : 1458039600000
} ];
$scope.attendances = [ {
"id" : 6,
"lesson" : {
"id" : 58
},
"present" : true,
"user" : {
"id" : 15
}
}, {
"id" : 819368,
"lesson" : {
"id" : 59
},
"present" : true,
"user" : {
"id" : 15
}
}, {
"id" : 819367,
"lesson" : {
"id" : 59
},
"present" : true,
"user" : {
"id" : 48
}
}, {
"id" : 967272,
"lesson" : {
"id" : 62
},
"present" : null,
"user" : {
"id" : 15
}
}, {
"id" : 967273,
"lesson" : {
"id" : 62
},
"present" : null,
"user" : {
"id" : 31
}
}, {
"id" : 967274,
"lesson" : {
"id" : 62
},
"present" : null,
"user" : {
"id" : 48
}
}, {
"id" : 967275,
"lesson" : {
"id" : 62
},
"present" : false,
"user" : {
"id" : 22840
}
}, {
"id" : 967276,
"lesson" : {
"id" : 62
},
"present" : null,
"user" : {
"id" : 29020
}
}, {
"id" : 4,
"lesson" : {
"id" : 63
},
"present" : true,
"user" : {
"id" : 15
}
}, {
"id" : 5,
"lesson" : {
"id" : 64
},
"present" : false,
"user" : {
"id" : 15
}
}, {
"id" : 16,
"lesson" : {
"id" : 65
},
"present" : true,
"user" : {
"id" : 15
}
}, {
"id" : 17,
"lesson" : {
"id" : 66
},
"present" : false,
"user" : {
"id" : 15
}
}, {
"id" : 967232,
"lesson" : {
"id" : 66
},
"present" : true,
"user" : {
"id" : 29020
}
}, {
"id" : 664012,
"lesson" : {
"id" : 67
},
"present" : true,
"user" : {
"id" : 15
}
}, {
"id" : 664013,
"lesson" : {
"id" : 67
},
"present" : true,
"user" : {
"id" : 31
}
}, {
"id" : 664014,
"lesson" : {
"id" : 67
},
"present" : true,
"user" : {
"id" : 48
}
}, {
"id" : 664015,
"lesson" : {
"id" : 67
},
"present" : true,
"user" : {
"id" : 22840
}
}, {
"id" : 664016,
"lesson" : {
"id" : 67
},
"present" : true,
"user" : {
"id" : 29020
}
}, {
"id" : 664007,
"lesson" : {
"id" : 68
},
"present" : false,
"user" : {
"id" : 15
}
}, {
"id" : 664008,
"lesson" : {
"id" : 68
},
"present" : false,
"user" : {
"id" : 31
}
}, {
"id" : 664009,
"lesson" : {
"id" : 68
},
"present" : false,
"user" : {
"id" : 48
}
}, {
"id" : 664010,
"lesson" : {
"id" : 68
},
"present" : false,
"user" : {
"id" : 22840
}
}, {
"id" : 664011,
"lesson" : {
"id" : 68
},
"present" : false,
"user" : {
"id" : 29020
}
}, {
"id" : 305303,
"lesson" : {
"id" : 90
},
"present" : false,
"user" : {
"id" : 15
}
}, {
"id" : 305302,
"lesson" : {
"id" : 90
},
"present" : false,
"user" : {
"id" : 31
}
}, {
"id" : 305306,
"lesson" : {
"id" : 90
},
"present" : false,
"user" : {
"id" : 22840
}
}, {
"id" : 305307,
"lesson" : {
"id" : 90
},
"present" : false,
"user" : {
"id" : 29020
}
} ];
$scope.isAttending = function(studentId, lessonId) {
var coisa;
$scope.attendances.forEach( function(arrayItem){
if(arrayItem.lesson.id === lessonId){
if(arrayItem.user.id === studentId){
// console.log(arrayItem.user.id + "-" + arrayItem.lesson.id +" = " + arrayItem.present);
coisa = arrayItem.present;
}
}
});
return coisa;
// return studentId + "-" + lessonId;
}
});
CSS:
body {
margin:0;
}
div#um{
background-color: white;
}
ul#dois {
list-style-type: none;
margin: 0;
padding: 0;
overflow: hidden;
margin-top: 8px;
}
li a {
float: left;
display: block;
color: black;
text-align: center;
padding: 14px 16px;
text-decoration: none;
}
table, th, td{
border: 1px solid #ebebeb;
}
table{
border-collapse: collapse;
width: 100%;
}
th {
height: 50px;
}
img#imgUnchecked, #imgChecked{
padding-left: 10px; padding-top: 16px; padding-right: 11px;
}
你有错字
<div ng-show="isAttending(student.id,lesson.id)">
这是导致 angular 日志中出现错误的原因,请参阅最后一行
如果您希望 img 可见,isAttending
函数应该 return 为真
如果您看到错误,最后一行显示您的错误。 当你使用像 ng-show 这样的 angular 标签时,你不必使用花括号 {{
去掉大括号,它应该可以正常工作