如何使ng中的每个指令重复以共享同一个ng模型
How to make each directive inside ng-repeat to share the same ng-model?
这是jsfiddle
JS文件
var myApp = angular.module('MyApp', []);
myApp.controller('MyCtrl', function ($scope) {
$scope.foo = "I'm foo!";
$scope.test = [1,2,3,5,6,7];
$scope.$watch('foo', function(){
console.log($scope.foo);
});
});
myApp.directive('myDirective', function () {
return {
restrict: 'AE',
template: '<div><input type="text" ng-model="ngModel" /></div>',
replace: true,
scope: {
ngModel : '=',
},
link: function(scope){
scope.ngModel = 'test';
}
};
});
HTML文件
<div ng-app="MyApp" ng-controller="MyCtrl">
{{foo}}<br />
<div ng-repeat="k in test">
<my-directive ng-model="foo" />
</div>
</div>
我想让每个my-directive
共享相同的ng-model
foo
,我们可以观察到,如果我们去掉ng repeat,并且只有一个指令,它可以工作,但是如果我们有多个指令,则它不工作。
例如
有多个类似的指令
<my-directive ng-model="foo" />
<my-directive class="2" ng-model="foo" />
将只创建一个输入
使用ng重复的多个指令将完全破坏指令
<div ng-app="MyApp" ng-controller="MyCtrl">
{{foo}}<br />
<div ng-repeat="k in test">
<my-directive ng-model="foo" />
</div>
</div>
我不太明白为什么会发生这种事,有人能给我一些见解吗?
因此,您正试图将数组test
中的每个值用作选项,当单击其中一个值时,foo
(您的ngModel)的值应更新为该选项的值。这是正确的吗?
如果是,请查看以下内容:http://jsfiddle.net/sscovil/btshp2a3/
指令
myApp.directive('myDirective', function () {
return {
scope: {
options: '='
},
require: 'ngModel',
template: '<ul><li ng-repeat="option in options"><button ng-click="select(option)">{{ option }}</button></li></ul>',
link: function(scope, iElement, iAttrs, ngModelController) {
scope.select = function(option) {
ngModelController.$setViewValue(option);
};
}
};
});
用法
<my-directive ng-model="foo" options="test"></my-directive>
请注意,该指令需要元素上的ngModel
。然后,它基于options
变量创建一个可单击选项列表,该变量应该是一个数组。单击某个选项时,该指令会将更改通知ngModel
控制器。
这是一篇很棒的文章,它解释了如何在自定义指令中使用NgModelController来做更有趣的事情。
相关文章:
- ng映射方向备选方案
- AngularJS UI路由器不能像ng路由器那样工作
- 角度:在ng重复上切换图像
- 正在使用$location.path(.)路由ng视图
- AngularJS:ng之后,重复$scope值未按预期更新
- ng打开空字符串
- 我应该使用Ng提交还是点击表格
- ng init中的表达式无法使用ng repeat
- ng更改事件不适用于Dropdown
- Facebook共享显示一个接一个的空白页面
- ng视图外的链接重定向到ng视图内的页面
- 通过javascript/html访问twitter共享iframe
- ng应用程序使脚本无限运行
- 角度的项目列表 ng 重复,ng 单击显示全宽描述
- 通过共享服务在两个不同ng应用程序中的控制器之间共享数据
- ng-重复共享相同ng模型的ng-options
- 在同一控制器(ng-controller)的不同实例之间共享数据
- 如何使ng中的每个指令重复以共享同一个ng模型
- 在ui路由器中的状态之间共享ng模型数据
- 一个单一的网页有一个ng-app或多个网页共享相同的ng-app