Angular指令访问控制器 - 奇怪的'ungoogled'消息

Rub*_*cer 1 angularjs angularjs-directive angularjs-scope

我正在尝试编写一个元素指令,我将其附加到控制器,以实现类似排序的行为.这是指令

.directive('sorting', function () {
        return {
            restrict: 'E',
            scope: false, // I know I can omit this with no effect
            template: function (elem, attr) {
                return '<div><a href ng-click="setsort('+"'"+attr.sortkey+"'"+')">'+attr.headtext+'</a></div>'+
                      '<div ng-show="sortfield=='+"'"+attr.sortkey+"' || sortfield='-"+attr.sortkey+"'"+
                      '" ng-class="{'+"'sortreverse':sortreverse}"+'">&#9650;</div>';
                  }
            }
        });
Run Code Online (Sandbox Code Playgroud)

setsort(sortkey),sortfield并且sortreverse属于控制器的范围.

预期的行为是,&#9650;只有在为指定元素选择了排序时才应显示caret().

排序按计划工作,但插入符号显示在所有排序列中,我得到一个奇怪的错误消息,我没有找到任何可用的反馈.

错误说:

Error: [$parse:lval] Trying to assing a value to a non l-value
http://errors.angularjs.org/1.4.5/$parse/lval
minErr/
[....a whole stacktrace ...]
"<div ng-show="sortfield=='yn_equivalent' || sortfield='-yn_equivalent'" ng-class="{'sortreverse':sortreverse}">"
Run Code Online (Sandbox Code Playgroud)

有趣的事实:错误的第一行实际上是由angularjs拼写错误的(应该assign代替assing)

当被召唤时,最后一行是指令生成的输出的一部分:

<sorting sortkey="yn_equivalent" headtext="SomeText"></sorting>
Run Code Online (Sandbox Code Playgroud)

我对Angularjs不是很有经验,所以也许你需要更多的反馈,我很乐意给你.

有线索吗?

谢谢.

Ani*_*sur 8

在你ng-show的OR运算符缺少一个等号后的比较.===无论如何你应该使用这两个.