我有一個指令,使用鏈接函數的元素參數上的jQuery事件,該指令有一個輸入綁定到從主控制器獲得的值該頁面通過嵌套的指令在一個獨立的範圍內傳遞,但是當改變輸入中的值時並不反映在來自控制器的原始對象中。angularjs指令鏈接功能沒有綁定來自控制器的數據
該對象具有以下結構: 發票1: - 產品1 - 產品2 發票2: - 產品3 - 產品4
當我改變發票的量,該值在主控制器中更新,但是當我更改產品的數量時,更改不會反映出來。
這是我的指導,你應該做的是,當該值在用戶點擊輸入似乎能夠編輯模型的價值:
eFieldTemplate.html
<div>
<div ng-if="IsMouseIn">
<input type="text" ng-model="value" class="form-control input-sm" />
</div>
<div ng-if="IsMouseOut" ng-click="OnMouseClick()">
{{value}}
</div>
<div ng-if="MouseClick">
<input type="text" ng-model="value" class="form-control input-sm" />
</div>
eFieldDirective.js
angular.module("appDirectives").directive("eField", function() {
return {
restrict: "E",
templateUrl: "eFieldTemplate.html",
scope: {
value: "="
},
controller: function ($scope) {
$scope.IsMouseOut = true;
$scope.IsMouseIn = false;
$scope.MouseClick = false;
$scope.OnMouseEnter = function() {
if (!$scope.MouseClick) {
$scope.IsMouseOut = false;
$scope.IsMouseIn = true;
$scope.MouseClick = false;
}
}
$scope.OnMouseLeave = function() {
if (!$scope.MouseClick) {
$scope.IsMouseOut = true;
$scope.IsMouseIn = false;
$scope.MouseClick = false;
}
}
$scope.OnMouseClick = function() {
$scope.IsMouseOut = false;
$scope.IsMouseIn = false;
$scope.MouseClick = true;
}
$scope.EndEdit = function() {
$scope.IsMouseOut = true;
$scope.IsMouseIn = false;
$scope.MouseClick = false;
}
},
link: function (scope, el, attrs) {
el.on("mouseenter", function() {
scope.OnMouseEnter();
scope.$apply();
});
el.on("mousemove", function() {
scope.OnMouseEnter();
scope.$apply();
});
el.on("mouseleave", function() {
scope.OnMouseLeave();
scope.$apply();
});
el.on("click", function() {
scope.OnMouseClick();
if (el[0].querySelector('input'))
el[0].querySelector('input').select();
scope.$apply();
});
}
};
});
有何建議?
我給這裏的例子:Plunker
修訂
我找到了解決方案使用ngIf,並且是從使用$ parent.value母體範圍內引用的變量。例如。
<Input type="text" ng-model="$parent.value" class="form-control input-sm" />
或者還提到另一個對象,例如,
<input type="text" ng-model="value">
<div ng-if="IsMouseIn">
<input type="text" ng-model="value">
</div>
下面是引用鏈接:what is the difference between ng-if and ng-show/ng-hide
沒有看到您的問題中的代碼如何與您所描述的問題相匹配 – Phil