【问题标题】:Directive is rendering HTML before a variable is given a value指令在给变量赋值之前渲染 HTML
【发布时间】:2016-11-29 02:08:20
【问题描述】:

我正在运行 Django 1.9 和 AngularJS 1.5。

我的 Django 视图如下所示:

#hello_world_view.py
def hello_world(request):
    t = get_template('hello-world.html')
    return HttpResponse(t.render())

HTML 文件如下所示:

<-- loading JavaScript files above -->
<helloWorld><HelloWorld>

AngularJS 控制器有一个从 Django REST API 检索数据的承诺。它看起来像这样

helloWorld.controller('helloWorldController', 
    function($scope, $helloWorldService1, $helloWorldService2) {
        Promise.all([$hWService1, $hWService2]).then(function(response) {
             $scope.service1 = response[0];
             $scope.service2 = response[1];
        });
    });

指令如下所示:

// helloWorld is already defined as an app.
helloWorld.directive('helloWorldDirective', function() {
    return {
        restrict:'E',
        link: function($scope, $elements, $attributes) {
            $scope.$watch('someVariable', function(data) {
                if (data) {
                    $elements.text(data);
                }
            }, true);
        },
        templateUrl: '/static/partials/some-template.html'
    }
});

某些模板内部有变量,这些变量依赖于正在解析的控制器的承诺。但是,当我通过它进行测试时。

>>> python manage.py runserver

变量未呈现。我已经将 angularJS 的标签从 {{}} 更改为 [[]],所以我知道不是 Django 不小心尝试渲染这些变量。

我正在做的事情可能吗?如果是这样,有解决办法吗?谢谢。

编辑:固定语法。

【问题讨论】:

    标签: javascript angularjs django


    【解决方案1】:

    看起来您需要为指令注册控制器。尝试添加:

    controller: 'helloWorldController' 到指令的返回对象。

    【讨论】:

    • 完成了,但看起来没有帮助...不过还是谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-04
    • 1970-01-01
    相关资源
    最近更新 更多