小编Zek*_*eke的帖子

Ionic/Angular:本地存储中的读写数组

我正在使用Ionic框架作为在线课程的一部分,我正在学习AngularJS以及许多其他对Web开发人员有用的工具.而且,作为一种先进的初学者类型,我被困住了.在本单元中,我们学会利用本地存储在本地保存数据,这样即使应用程序关闭后我们也可以获取我们喜欢的项目.但是,我无法让它工作.

所以这就是我所做的:

失败的尝试

我可以将数据导入本地存储.我可以附加数据.我这样做是使用这个函数:

$scope.favoriteData = $localStorage.getObject('favorites', '[]');

$scope.addFavorite = function (index) {
    console.log('Current Favorites', $scope.favoriteData);
    $scope.favoriteData =  Object.keys($scope.favoriteData).map(function(k) { return $scope.favoriteData[k] });
    console.log ($scope.favoriteData);
    $scope.storeVar = $scope.favoriteData.push("'{id':" + index + '},');
    console.log ($scope.favoriteData);
    $localStorage.storeObject('favorites', $scope.favoriteData);
    console.log('Added Favorite', $scope.favoriteData)
};
Run Code Online (Sandbox Code Playgroud)

在本地存储中,这会生成以下条目:

favorites: ["'{id':0},","'{id':1},"]
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.但是,这没用.因为我需要这个对象具有以下格式:

favorites: [{'id':0}, {'id':1}]
Run Code Online (Sandbox Code Playgroud)

等等.此外,我不应该添加重复项.我在其他地方有一种功能,但我仍然坚持如何结合这两个功能.

我的功能是这样的:

function (index) {
        for (var i = 0; i < favorites.length; i++) {
            if (favorites[i].id == index)
                return;
        }
        favorites.push({
            id: index
        });
    };
Run Code Online (Sandbox Code Playgroud)

这个问题是,我不明白它是如何做的.

那么请帮忙吗?

编辑#1:

第二次尝试

在@Muli和@ It-Z的帮助下,我正在使用以下代码:

$scope.favoriteData …
Run Code Online (Sandbox Code Playgroud)

javascript arrays local-storage angularjs ionic-framework

6
推荐指数
1
解决办法
572
查看次数

使用ngRepeat嵌入YouTube视频

我有点问题.我正在开发一个投资组合网站,它应该根据存储在网站中的网址自动列出所有类型的内容json.我在阵列下面有这一行videos.

"url": "https://www.youtube.com/watch?v=4ZHwu0uut3k",
"date": "2016-05-11"
Run Code Online (Sandbox Code Playgroud)

我必须使用这个方案,因为我在其他地方使用不同形式的链接.没问题,我想,我去实现一个过滤器.

.filter("GetYouTubeID", function ($sce) {
  return function (text) {
      var video_id = text.split('v=')[1].split('&')[0];
      return video_id;
  }
})
Run Code Online (Sandbox Code Playgroud)

所以我转到我的HTML,我开始 ng-repeat

    <div class="media z-depth-1" ng-repeat="video in videos | orderBy: '-date'"  style="padding:20px">
        <div>
     <iframe width="560" height="315" src="https://www.youtube.com/embed/{{video.url | GetYouTubeID}}" frameborder="0" allowfullscreen></iframe>
            <p>Display output for control reasons: {{video.url | GetYouTubeID}}</p>
        </div>
    </div>
Run Code Online (Sandbox Code Playgroud)

这一切都应该有效,对吗?但事实并非如此.为什么?我无法理解这一点.完全没有.请帮忙?

编辑#1

在SimonSchüpbach发表评论后,我尝试了以下内容,但无济于事:

.filter("GetYouTubeID", function ($sce) {
  return function (text) {
      var video_id = text.split('v=')[1].split('&')[0];
      var ytembed = 'https://www.youtube.com/embed/';
      var complete_id = ytembed …
Run Code Online (Sandbox Code Playgroud)

youtube angularjs

0
推荐指数
1
解决办法
6578
查看次数