gpt4 book ai didi

javascript - ng-click 上的 ng-show 不适用于 AngularJS

转载 作者:行者123 更新时间:2023-11-29 10:15:48 25 4
gpt4 key购买 nike

我试图在单击“编辑模式”链接时显示一些“编辑”图标。到目前为止,我已尝试使用 ng-class 和 ng-show 进行 ng-click,但它没有响应。

这是我的 html:

<div click-to-edit="questions.n1.name" class="row question"></div>
<a href="" ng-click="editMode = !editMode">Enter edit mode</a>

点击编辑指令:

.directive("clickToEdit", function () {
var editorTemplate = '' +
'<div class="click-to-edit">' +
'<div ng-hide="view.editorEnabled">' +
'{{value}} ' +
'<a class="glyphicon glyphicon-pencil" ng-show="editMode" ng-click="enableEditor()"></a>' +
'</div>' +
'<div ng-show="view.editorEnabled">' +
'<input type="text" class="" ng-model="view.editableValue">' +
'<a class="glyphicon glyphicon-ok" href="#" ng-click="save()" ></a>' +
'<a class="glyphicon glyphicon-remove" ng-click="disableEditor()"></a>' +
'</div>' +
'</div>';

return {
restrict: "A",
replace: true,
template: editorTemplate,
scope: {
value: "=clickToEdit",
},
link: function (scope, element, attrs) {
scope.view = {
editableValue: scope.value,
editorEnabled: false
};

scope.enableEditor = function () {
scope.view.editorEnabled = true;
scope.view.editableValue = scope.value;
setTimeout(function () {
element.find('input')[0].focus();
//element.find('input').focus().select(); // w/ jQuery
});
};

scope.disableEditor = function () {
scope.view.editorEnabled = false;
};

scope.save = function () {
scope.value = scope.view.editableValue;
scope.disableEditor();
};

}
};
})

我还创建了一个 Plunker .在 script.js 的第 11 行,ng-show 应该由 html 上的 ng-click 触发(第 20 行)。

我错过了什么?我是否必须在指令 clicktoEdit 中才能触发 ng-show?

最佳答案

您的指令具有隔离作用域,因此 editMode 在那里不可用。解决此问题的最简单方法是显式引用父作用域属性:

<a class="glyphicon glyphicon-pencil" ng-show="$parent.editMode" ng-click="enableEditor()"></a>

演示:http://plnkr.co/edit/8M98LGOfdRrBp5IaaGKZ?p=preview

关于javascript - ng-click 上的 ng-show 不适用于 AngularJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22129859/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com