AngularJs 属性指令 2 路绑定
AngularJs Attribute Directive 2 Way Binding
我有一个这样的角度应用程序
普伦克
Javascript:
(function(angular, module){
module.controller("TestController", function($scope){
$scope.magicValue = 1;
});
module.directive("valueDisplay", function () {
return {
restrict: "A",
template: '<span>Iso Val: </span>{{ value }}<br/><span>Iso Change: </span><input data-ng-model="value" />',
replace: false,
scope: { },
link: function (scope, element, attrs) {
var pValKey = attrs.valueDisplay;
// Copy value from parent Scope.
scope.value = scope.$parent[pValKey];
scope.$parent.$watch(pValKey, function(newValue) {
if(angular.equals(newValue, scope.value)) {
// Values are the same take no action
return;
}
// Update Local Value
scope.value = newValue;
});
scope.$watch('value', function(newValue) {
if(angular.equals(newValue, scope.$parent[pValKey])) {
// Values are the same take no action
return;
}
// Update Parent Value
scope.$parent[pValKey] = newValue;
});
}
};
});
}(angular, angular.module("Test", [])));
.HTML:
<!DOCTYPE html>
<html>
<head>
<script data-require="angular.js@*" data-semver="1.2.0-rc2" src="http://code.angularjs.org/1.2.0-rc.2/angular.js"></script>
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
</head>
<body ng-app="Test">
<div ng-controller="TestController">
<ol>
<li>
<span>Parent Val: </span>{{ magicValue }}<br/>
<span>Parent Change:</span><input data-ng-model="magicValue" />
</li>
<li data-value-display="magicValue"></li>
</ol>
</div>
</body>
</html>
好的,这有效,但我想知道是否有更好的方法来执行我在这里设置的 2 路绑定?
请记住,我想要隔离范围,我知道我可以定义额外的属性并使用"="在父范围和隔离范围之间具有 2 路数据绑定,我想要这样的东西,但数据被传递到指令属性,就像我在这里一样。
您可以使用隔离范围更简洁地执行此操作。
这是一个更新的 plunker。
您可以将指令的值与 value: '=valueDisplay'
双向绑定
=
告诉 angular 你想要双向绑定:
module.directive("valueDisplay", function () {
return {
restrict: "A",
template: '<span>Iso Val: </span>{{ value }}<br/><span>Iso Change: </span><input data-ng-model="value" />',
replace: false,
scope: { value: '=valueDisplay' },
link: function (scope, element, attrs) {
}
};
});
相关文章:
- 如何使用ngrepeat和双向绑定获得指令的隔离范围
- AngularJS指令只识别双向绑定类型
- 在指令中绑定方法
- 将指令绑定到控制器属性
- NG-重复中断指令模型绑定
- 将click事件绑定到AngularJS指令中的子元素
- 对于使用传递的数据计算的局部范围变量,角度绑定在自定义指令中不起作用
- 角度指令双向绑定不起作用
- 指令中选择输入的双向绑定不起作用
- 将回调绑定到没有隔离作用域的指令
- 使用 Angular 和 UI-bootstrap 对模态事件绑定无法工作的指令
- 无法绑定到没有指令 + angularjs 标识符的控制器
- 如何将函数绑定到使用链接函数创建 HTML 的角度指令
- Angularjs 绑定 2 指令将模型范围限定为父控制器模型
- 2路数据绑定指令角度
- 通过公共属性绑定指令实例
- 在测试期间更改了单向绑定指令属性,没有更新指令范围
- 如何在angular中使用数据绑定指令来包装元素
- 用AngularJS绑定指令
- 2方式绑定指令与弹出窗口/点击