我正在使用Ionic,并希望根据数据动态更改每个项目的背景颜色<ion-list>
.我以为我会通过函数调用来返回正确的类
<ion-list>
<ion-item ng-repeat="singleCase in allCases" ng-class="getBackgroundColour(singleCase)" class="item-avatar">
<h2>{{singleCase.date}}</h2>
<p>{{singleCase.caseType}}</p>
</ion-item>
</ion-list>
Run Code Online (Sandbox Code Playgroud)
这是目前的控制器
.controller('AllCasesCtrl', ['$scope', '$log', 'dummyData', function($scope, $log, dummyData) {
$scope.allCases = dummyData.cases;
$scope.getBackgroundColour = function(singleCase){
$log.log("getBackgroundColour called...singleCase type: " + singleCase.speciality);
var colourMap = {
speciality1: "speciality1Class",
speciality2: "speciality2Class",
speciality3: "speciality3Class"
};
return colourMap[singleCase.speciality];
};
}])
Run Code Online (Sandbox Code Playgroud)
在检查控制台时,列表中的getBackgroundColour()
每个函数被调用7次<ion-item>
.为什么这样,我应该避免使用函数调用ng-class
吗?
我是一名新手学习C并尝试从在线讲座中了解以下代码.它扫描字符串中的整数; 如果遇到字符,则sscanf失败.
int n; char c;
if (sscanf(string, " %d %c", &n, &c) == 1)
//return the integer
else
// fail
Run Code Online (Sandbox Code Playgroud)
我已经阅读了sscanf的手册页,我仍然对检查返回值以及此代码的工作原理感到困惑.他们声明"这些函数返回分配的输入项数".
如果sscanf只遇到字符,它会将它们写入&c ...但在这种情况下&n将不会被写入.在这种情况下,我会认为sscanf的返回值仍然是1?
我是编程的新手,从Objective-C开始,但我决定在进一步发展之前回到基础.我在C上花了一些时间,并且在指针混乱中挣扎.我的问题是关于K&R如何实现fgets(p165,第2版).下面的代码直接来自文本并附有我的几条评论.
char* fgets(char* s, int n, FILE *iop)
{
register int c;
register char* cs;
cs = s;
while(--n > 0 && (c = getc(iop)) != EOF)
{
// put the input char into the current pointer position, then increment it
// if a newline entered, break
if((*cs++ = c) == '\n')
break;
}
*cs = '\0';
return (c == EOF && cs == s) ? NULL : s;
}
Run Code Online (Sandbox Code Playgroud)
1)我们将char*s传递给fgets函数,我们在其位置存储用户输入.为什么需要声明本地char*cs - 然后将其初始化为s?为什么我们不能在if语句中直接操作/添加s?看到cs初始化为指向s,是不是将cs添加到cs完全相同的东西?
2)用以上内容绑定...当函数返回时,进行测试以查看cs == s.为什么这有必要?
我想我可能会遗漏一些非常基本的东西 - 我确实检查了SO和谷歌,但无法弄明白.谢谢!
我正在使用Ionic编写PhoneGap/Cordova应用程序,并使用SQLite(使用ngCordova)进行持久存储.应用程序的核心是从SQLite数据库中检索的项目的滚动列表.
listController.js
.controller('ListCtrl', [
'$scope',
'dataFactory',
function($scope, dataFactory) {
var items = dataFactory.getAllItems().then(function(data){
$scope.allItems = data;
});
}
]);
Run Code Online (Sandbox Code Playgroud)
dataFactory.js
.factory('dataFactory', [function($window, $log, $q, $cordovaSQLite, dummyDataGenerator){
var db_;
// ...lots of SQLite fun in here
// cascading async callbacks to load the database and inject dummy data
var openDB_ = function(){...};
var createTable_ = function(){...};
// etc
var getAllItems = function(){
var q = $q.defer();
$cordovaSQLite.execute(db_, sqlSelectString, []).then(
function(results) {
$log.log("SQL SELECT successful");
var i, len, allItems = [];
for(i …
Run Code Online (Sandbox Code Playgroud)