【问题标题】:Error: [$compile:nonassign] Expression 'undefined' in attribute [ATTRIBUTENAME] used with directive '[DIRECTIVENAME]' is non-assignable?错误:与指令“[DIRECTIVENAME]”一起使用的属性 [ATTRIBUTENAME] 中的 [$compile:nonassign] 表达式“未定义”不可赋值?
【发布时间】:2017-08-07 08:05:54
【问题描述】:

当我尝试在指令正文中转换日期时出现错误:

错误:[$compile:nonassign] 属性中的表达式“未定义” 与指令“[DIRECTIVENAME]”一起使用的 [ATTRIBUTENAME] 是 不可分配!

我使用的是 Angular 版本 1.4.14

预期结果:在我的模板指令中将返回类名 -

div class="news-block-container sm-padding-right"

什么会导致这个问题?谢谢你的回答

这是我的代码示例:

'use strict';

angular.module('test.directives')
    .directive('test', function () {
        var templatePath = "/views/templates/testTemplate.tmpl.html";
        return {
            restrict: 'E',
            scope: {
                position: '=',
            },
            templateUrl: templatePath,
            link: function (scope, element, attrs) {
                scope.$watch('position', function () {
                        if (scope.position === "left") {
                            scope.position = "sm-padding-right";
                        }
                        else {
                            scope.position = "sm-padding-left";
                        }
                    });
            }
        }

    });
view - directive usage
 <test-template position="'left'"></test-template>



//!TEMPLATE! - testTemplate
<div>
    <a href="{{#}}">
        <div class="news-block-container  {{position}}">           
        </div>
    </a>
</div>

【问题讨论】:

    标签: javascript angularjs


    【解决方案1】:

    只需使用ng-class 指令动态分配类

    <div>
        <a href="{{#}}">
            <div class="news-block-container" ng-class="position">           
            </div>
        </a>
    </div>
    

    更改angular.module('test.directives')

    到这个angular.module('test.directives',[])

    同时删除模板中散列周围的花括号

    更改&lt;a href="{{#}}"&gt;

    到这个&lt;a href="#"&gt;

    【讨论】:

    • 不,不幸的是它仍在复制。同样的错误:'错误:[$compile:nonassign] 与指令'testTemplate'一起使用的属性'position'中的表达式''left''是不可分配的!'
    • 是的,感谢您的回答。我看到您的演示正在运行。我按照你说的做了所有的更正,但仍然有这个问题。也许您还有其他想法为什么会这样?我用你的演示尝试了我的 Angular 版本,它正在工作
    • 你可以创建自己的 plnkr
    • 好的,我会试试的
    • 我认为我无法重现这个大项目的所有细微差别。而且我也明白,如果没有这些信息,您将无法帮助我。无论如何谢谢你,如果几个小时内没有人回答我,我会选择你的答案作为正确的答案。
    猜你喜欢
    • 1970-01-01
    • 2014-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-24
    • 2017-12-04
    • 1970-01-01
    相关资源
    最近更新 更多