2014-11-06 2 views
1

Я новичок как в Angular, так и в файлах cookie. У меня есть HTML-шаблон, который должен отображаться при первом посещении пользователем моего приложения. Однако в следующий раз, когда они посещают, они больше не должны видеть этот шаблон и видеть шаблон по умолчанию.Как использовать куки? Угловые печеньки

До сих пор я нашел решения размещенные here и here.

Однако оба решения бросали ошибки, в 1-й линии == не работал, в следующем примере string is not a function

Как бы этот код ниже работы, чтобы проверить, чтобы увидеть, если есть печенье, если ни то не создать печенье ,

// Controller for Dashboard 
app.controller('DashboardController', ['$scope', '$cookies', '$cookieStore', function ($scope, $cookies, $cookieStore) { 

    // if cookie does not exits show welcome template 
    //  create cookie 
    // if cookie welcome exits show default template 


    $scope.welcome = $cookieStore.get('welcome'); 

    $scope.checkCookie = function(welcome){ 
     $scope.welcome = welcome; 
     $cookieStore.put('cookie', welcome); 
    }; 

    // $cookieStore.put("name","my name"); 
    // $cookieStore.get("name") = "my name"; 
    // $cookieStore.remove("name"); 
}]); 

ответ

1

Чтение и письмо печенья довольно легко с угловыми и угловыми печеньями. Сначала вам нужно ввести $ cookie-зависимость в приложение и контроллер.

И затем вы можете назначать и извлекать значения из параметра $ cookie.

В следующем примере будут показаны приветственные сообщения для первых пользователей и приветственное сообщение для других пользователей.

angular.module('CookieDemo', ['ngCookies']) 
.controller('DashboardController', ['$scope', '$cookies', function ($scope, $cookies) { 
    // Retrieve the cookie and set it to userName, in first visit it will be an empty string 
    $scope.userName = $cookies.userName || ""; 

    // Set the cookie for next visit of the user 
    $cookies.userName = 'testUser'; 
}]); 

<body ng-app="CookieDemo" ng-controller="DashboardController"> 
    <h1 ng-show="userName.length > 0">Hello {{userName}}</h1> 
    <h1 ng-hide="userName.length > 0">This is your first visit.</h1> 
</body> 

Адрес plunker.

1

Я не понимаю, почему решение использовать его, если можно написать модуль?

define('cookies',function(){ 

function getCookie(name) { 
    var matches = document.cookie.match(new RegExp(
     "(?:^|;)" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)" 
    )) 
    return matches ? decodeURIComponent(matches[1]) : undefined 
} 


function setCookie(name, value, props) { 
    props = props || {} 
    var exp = props.expires 
    if (typeof exp == "number" && exp) { 
     var d = new Date() 
     d.setTime(d.getTime() + exp*1000) 
     exp = props.expires = d 
    } 
    if(exp && exp.toUTCString) { props.expires = exp.toUTCString() } 

    value = encodeURIComponent(value) 
    var updatedCookie = name + "=" + value 
    for(var propName in props){ 
     updatedCookie += "; " + propName 
     var propValue = props[propName] 
     if(propValue !== true){ updatedCookie += "=" + propValue } 
    } 
    document.cookie = updatedCookie 

} 


function deleteCookie(name) { 
    setCookie(name, null, { expires: -1 }) 
} 


    return { 
     getCookie:getCookie, 
     setCookie:setCookie, 
     deleteCookie:deleteCookie 
     } 
}) 
+0

При использовании Angular нет необходимости писать собственный модуль. Просто используйте ngCookies, как это сделал принятый ответ. – sfuqua