小编dav*_*ekr的帖子

angularjs - 点击与实际网址的链接时刷新

我使用routeProvider为我的网址定义控制器和模板.

当我点击与实际位置具有相同网址的链接时,没有任何反应.reload()如果用户点击这样的链接,即使位置没有改变,我也希望调用该方法.换句话说,如果我将位置设置为相同的值,我希望它的行为与我将其设置为不同的值相同.

有没有办法配置routeProvider或locationProvider自动执行?或者这样做的正确方法是什么?这是往返应用程序中的标准行为,但如何在angularjs中执行此操作?

我也在谷歌小组上问过它.

更新:

这个问题得到了很多观点,所以我将尝试解释我是如何解决我的问题的.

我在评论中建议Renan Tomal Fernandes建议我在我的应用程序中链接的自定义指令.

angular.module('core.directives').directive('diHref', ['$location', '$route',
        function($location, $route) {
    return function(scope, element, attrs) {
        scope.$watch('diHref', function() {
            if(attrs.diHref) {
                element.attr('href', attrs.diHref);
                element.bind('click', function(event) {
                    scope.$apply(function(){
                        if($location.path() == attrs.diHref) $route.reload();
                    });
                });
            }
        });
    }
}]);
Run Code Online (Sandbox Code Playgroud)

然后该指令用于我想要具有此功能的应用程序中的所有链接.

<a di-href="/home/">Home</a>
Run Code Online (Sandbox Code Playgroud)

该指令的作用是它根据href属性为您设置属性,di-href因此angular可以像往常一样处理它,当您将鼠标悬停在链接上时可以看到该URL.此外,当用户点击它并且链接的路径与当前路径相同时,它会重新加载路径.

javascript angularjs

48
推荐指数
5
解决办法
8万
查看次数

继承类属性(python)

有没有办法完成这样的事情?我在Python工作,但我不确定是否有办法在任何编程语言中做到这一点......

class Parent():
    class_attribute = "parent"

    @staticmethod
    def class_method():
        print __class__.class_attribute

class Child(Parent):
    class_attribute = "child"
Run Code Online (Sandbox Code Playgroud)

我知道我不能__class__直接打电话.它只是一个例子,因为我想要类似于类本身的引用,因为我希望子类基于其class_attribute以不同的方式行动.

然后假定的输出应该是这样的:

> Parent.class_method()
"parent"
> Child.class_method()
"child"
Run Code Online (Sandbox Code Playgroud)

我知道通过实例可以实现相同的技术.但是我不想创建实例,因为有时候__init__方法中的代码可能很长并且要求很高,如果我想class_method经常调用,我将不得不创建大量用于这个方法调用的实例.因为class_attributeclass_method是静态的,不会被实例改变.

python inheritance overriding

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

将数据从angularjs发送到django

我正在使用Angularjs及其$ http模块向Django服务器发送POST AJAX请求.这是一个例子:

$http({ 
        method: 'POST', 
        url: '/url/', 
        data: 'test data'
  }).
  success(function(data, status, headers, config) {
        doSomeStuffWhenSuccess();
  });
Run Code Online (Sandbox Code Playgroud)

问题是我在Django中得到的.无论我发送什么数据始终是QueryDict对象的关键,因此值始终是空列表.

<QueryDict: {u'test data': [u'']}>
Run Code Online (Sandbox Code Playgroud)

我不知道为什么.我错过了什么?

我使用几乎默认创建的Django应用程序只使用默认中间件.我只创建了一个视图并在url config中设置了一个url.Django的版本是1.3.我配置angular的$ http模块总是发送一个包含csrf令牌的头来满足Django.

django ajax http angularjs

5
推荐指数
2
解决办法
4684
查看次数

AngularJS - 浏览器缓存JSON数据

我正在使用AngularJS框架创建一个应用程序.

问题:

当我将我的应用程序跳出到不同的域或页面然后当我使用历史记录返回按钮返回到我的应用程序时,我只返回JSON.当我跳出我的应用程序浏览历史记录时,同样的情况发生,然后当我使用前进按钮转到我的应用程序时,我再次只获得JSON.后退/前进在我的应用程序中运行良好,只有当我去不同的域时才会发生.

这是为什么?我认为这与缓存一些方法有关,因为当我返回/转发到我的应用程序时,没有请求发送到服务器.

如果你去这个网址,你可以看到我在说什么 - http://test.deving.cz/admin/prihlasit/.然后回去然后前进.

我的设置:

我的应用程序配置为使用HTML5历史记录API.对于启动mydomain.com/admin/的网址,我总是返回包含angular的index.hmtl.然后,对于我的应用程序中的每个其他URL,将发送两个请求.一个用于模板,一个用于数据(JSON).

例:

$routeProvider.when('/admin/page/', {controller: 'PageListCtrl', templateUrl: '/templates/page/list/', resolve: 'PageListCtrl.resolve'})

PageListCtrl:

angular.module('page').controller('PageListCtrl', ['$scope', 'data', function($scope, data) {
    $scope.pages = data;
}]);
Run Code Online (Sandbox Code Playgroud)

解决功能:

resolve = {data: 
            function($http, $q){
                var delay = $q.defer();
                $http.get().success(function(data){
                    delay.resolve(data['data']);
                });
                return delay.promise;
            }
        }
Run Code Online (Sandbox Code Playgroud)

我应该如何配置角度或我的应用程序告诉浏览器不要缓存数据并始终获取index.html然后让angular执行请求?

browser-cache browser-history angularjs

5
推荐指数
1
解决办法
5923
查看次数