小编drj*_*976的帖子

使用带有函数调用的ng-class - 多次调用

我正在使用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吗?

angularjs ionic-framework

18
推荐指数
2
解决办法
6万
查看次数

sscanf行为/返回值

我是一名新手学习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?

c scanf

9
推荐指数
2
解决办法
3万
查看次数

fgets实施(K&R)

我是编程的新手,从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和谷歌,但无法弄明白.谢谢!

c pointers

8
推荐指数
1
解决办法
3330
查看次数

Angular/Ionic和异步SQLite - 确保数据工厂在返回之前初始化

我正在使用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)

javascript sqlite angularjs ionic-framework

8
推荐指数
1
解决办法
7070
查看次数

标签 统计

angularjs ×2

c ×2

ionic-framework ×2

javascript ×1

pointers ×1

scanf ×1

sqlite ×1