错误:[$ compile:nonassign]与指令'[DIRECTIVENAME]'一起使用的属性[ATTRIBUTENAME]中的表达式'undefined'是不可赋值的?

时间:2017-03-16 08:49:54

标签: javascript angularjs

当我试图在指令体内转换日期时,我得到错误:

  

错误:[$ compile:nonassign]属性中的表达式'undefined'   [ATTRIBUTENAME]与指令'[DIRECTIVENAME]'一起使用是   非可分配!

我正在使用角度版本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>

1 个答案:

答案 0 :(得分: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',[])

同时删除模板

中散列的大括号

更改<a href="{{#}}">

到此<a href="#">