在页面编译期间,angular会抛出以下错误:
angular.js:371 Error: [$compile:nonassign] http://errors.angularjs.org/1.2.10/$compile/nonassign?p0=undefined&p1=wlDragEvent
at Error (native)
我已在指令中将可选参数(属性)定义为:
wlDragEvent: "@?wlDragEvent"
我也试过用@和=来定义它?以前,但没有什么区别。
指令模板具有硬编码值," MoveCell"这应该是好的,它是一个属性,不应该需要一个模型,对吗?:
<div data-wl-drag-event="MoveCell"
首先,对于创建的每一行(ng-repeat)都不会抛出错误,我已经使用了一些console.log来尝试并指出错误,但我找不到模式
<div class="row">
<div id="container" class="col-md-12">
<div data-ng-repeat="r in rows" class="col-md-12"
data-wl-drag-container="DContainer" data-ng-model="moveData"
data-drop-data="itemId">
<div class="gridRow">
<div data-ng-repeat="item in items | orderBy:'startIndex'" class="cellContainer">
<div data-wl-drag-event="MoveDaySlot" data-drag-data="item.resId"
data-drop-data="$parent.roomChartRow.room.roomId"
class="roomChartCell col-md-{{item.range}} dragCell" style="padding:0 1px 0 1px;">
<div data-ng-if="showOption(item)"
class="gridCell">{{item.text}}</div>
</div>
</div>
</div>
</div>
</div>
</div>
js部分:
app.directive("wlDragEvent", ["$parse", function ($parse) {
return {
restrict: "A",
scope: {
dragData: "=",
dropData: "=",
moveData: "=",
wlDragEvent: "@?wlDragEvent"
},
link: function (scope, element, attributes) {
if (attributes.wlDragEvent) {
scope.wlDragEvent = attributes.wlDragEvent;
} else {
scope.wlDragEvent = "";
}
//...
}
};
}]);
app.directive("wlDragContainer", ["$parse", function ($parse) {
return {
restrict: "A",
controller: ["$scope", function($scope) {
$scope.$ctrl = this;
this.moveData = {
from: {
scope: "",
dragData: "1"
},
to: {
scope: "",
dropData: "2"
}
}
}
],
scope: true,
link: function (scope, element, attributes) {
scope.moveData = scope.$ctrl.moveData;
console.log("wlDragContainer scope: %O", scope);
}
}
}]);
我已经看了几个小时,没有什么突出的。我们将锁定到版本1.2.x,以防有建议升级版本或者在此版本中是否存在特定需要的东西。
谢谢!
答案 0 :(得分:0)
您无法使用&#39; =&#39;为属性分配硬编码值。 (双向绑定)指定,无论它是否可选。当指令中的值发生变化时,它将尝试使用它将该值分配回控制器/指令,并且无处可放置它。我会认为&#39; @?&#39;会对你有用但如果不是你可以试着保持&#39; =?&#39;并将范围变量分配给&#39; MoveCell&#39;并使用该值代替硬编码。