是否可以在单击按钮时绑定和取消绑定元素? - AngularJS
Is it possible to bind and unbind an element on button click? - AngularJS
我创建了一个显示文本和一个输入字段,并将它们与 ng-model 绑定在一起,如下所示。
HTML
<div ng-app ng-controller="test">
<div ng-bind="content"></div>
<input id="txtElem" type="text" ng-model="content">
<button ng-click="stopBinding()"> Unbind</button>
<button ng-click="binding()"> Bind </button>
</div>
JS
function test( $scope ) {
$scope.content = 'Welcome';
$scope.binding = function() {
angular.element(document.getElementById('txtElem')).bind();
};
$scope.stopBinding = function() {
angular.element(document.getElementById('txtElem')).unbind();
};
};
显示
我发现这个(http://jsfiddle.net/jexgF/) 用于解除绑定方法,但不知道如何再次绑定它,如果单击"Bind" 按钮。有人可以帮忙吗?
除了在<div>
和<input>
的元素之间绑定和解除绑定,谁知道如何绑定和解除绑定两个<input>
字段?
我不确定您示例中的 test()
函数位于何处,但在控制器中操作 DOM 并不是一个好主意 - 实际上是一种反模式.
正确的做法是创建一个变量,与输入变量分开content
,代表预览部分。
您可以简单地在视图中执行此操作;如果这个逻辑在你看来是一个 View-only 逻辑。 lastBound
表示最后的绑定值content
:
<div ng-init="binding = true">
<input ng-model="content">
<button ng-click="binding = false">Unbind</button>
<button ng-click="binding = true">Bind</button>
<div ng-bind="lastBound = (binding && content) || lastBound"></div>
</div>
(这里使用ng-init
只是为了说明 - 你应该在控制器中设置binding
)。
编辑:
如果意图是绑定到另一个 ng-model
,那么解决方案是不同的,但不是不同的。您仍然需要使用 2 个变量:
<input ng-model="content" ng-change="preview = (binding && content) || preview">
<input ng-model="preview" ng-change="content = (binding && preview) || content">
我创建了一个显示文本和一个输入字段,并将它们与 ng-model 绑定在一起,如下所示。
HTML
<div ng-app ng-controller="test">
<div ng-bind="content"></div>
<input id="txtElem" type="text" ng-model="content">
<button ng-click="stopBinding()"> Unbind</button>
<button ng-click="binding()"> Bind </button>
</div>
JS
function test( $scope ) {
$scope.content = 'Welcome';
$scope.binding = function() {
angular.element(document.getElementById('txtElem')).bind();
};
$scope.stopBinding = function() {
angular.element(document.getElementById('txtElem')).unbind();
};
};
显示
我发现这个(http://jsfiddle.net/jexgF/) 用于解除绑定方法,但不知道如何再次绑定它,如果单击"Bind" 按钮。有人可以帮忙吗?
除了在<div>
和<input>
的元素之间绑定和解除绑定,谁知道如何绑定和解除绑定两个<input>
字段?
我不确定您示例中的 test()
函数位于何处,但在控制器中操作 DOM 并不是一个好主意 - 实际上是一种反模式.
正确的做法是创建一个变量,与输入变量分开content
,代表预览部分。
您可以简单地在视图中执行此操作;如果这个逻辑在你看来是一个 View-only 逻辑。 lastBound
表示最后的绑定值content
:
<div ng-init="binding = true">
<input ng-model="content">
<button ng-click="binding = false">Unbind</button>
<button ng-click="binding = true">Bind</button>
<div ng-bind="lastBound = (binding && content) || lastBound"></div>
</div>
(这里使用ng-init
只是为了说明 - 你应该在控制器中设置binding
)。
编辑:
如果意图是绑定到另一个 ng-model
,那么解决方案是不同的,但不是不同的。您仍然需要使用 2 个变量:
<input ng-model="content" ng-change="preview = (binding && content) || preview">
<input ng-model="preview" ng-change="content = (binding && preview) || content">