Angularjs自定义表单控件作用域重复
Angularjs custom form control scope is duplicated
我创建了一个简单的angularjs指令来输入城市和邮政编码。它工作得很好,只是如果我在同一个控制器中使用两次,输入字段中的值会重复!我相信这是一个范围问题,但我不知道如何解决它?
FDVilleModule = angular.module('FDVille', []).
directive('fdVille', () ->
return {
restrict: 'E'
require: 'ngModel'
template: """
<div class='"row-fluid'">
<div class='"span4'">
<input
ng-model='"cp'"
ng-change='"edit()'"
maxlength='"5'"
type='"text'"
class='"input-block-level'"
placeholder='"Code Postal'" />
</div>
<div class='"span8'">
<select ng-model='"selected_ville'"
ng-options='"v.id as v.nom for v in villes'"
class='"input-block-level'">
</select>
</div>
</div>"""
link: (scope, elem, attr, ctrl) ->
scope.$watch('selected_ville', (value)->
ctrl.$setViewValue(value))
controller: ($scope) ->
download_villes = (cp) -> $.getJSON('/ws/villes/cp', {cp:cp}, set_data)
download_villesid = (id) -> $.getJSON('/ws/villes/id', {id:id}, set_init_data)
set_data = (results) ->
$scope.villes = results
$scope.selected_ville = results[0].id if results.length
$scope.$apply()
saved_cp = ""
$scope.edit = () ->
if isNaN($scope.cp)
$scope.cp = saved_cp
else
saved_cp = $scope.cp
if saved_cp.length == 5
download_villes(saved_cp)
else
$scope.selected_ville = null
$scope.villes = []
}
)
实际上我在文档中找到了答案:
scope-如果设置为:
true,则将为此指令创建一个新的作用域。如果同一元素上的多个指令请求一个新的作用域,只有一个将创建新的作用域。新的作用域规则不适用于根的,因为模板的根总是获得一个新的范围
在其他情况下,您可以尝试
replace: true
注意:您需要有一个根元素。
以下是我们这些不知道的读者的文档链接:
http://docs.angularjs.org/guide/directive
相关文章:
- 自定义控件中的双向绑定在SAPUI5中不起作用
- 用键盘分页jQuery下一个和上一个控件.触发器('点击')不'不起作用
- 脚本在web浏览器控件中不起作用
- NVD3图表控件don'在svg元素上挂接鼠标事件时不起作用
- 如何基于父控件的作用域生成子控制器
- HTML5 视频控件不起作用
- 传单 GeoJASON 图层控件在此脚本中不起作用
- 指南文本 使用其他控件输入文本时不起作用
- HTML5 视频控件在 Internet Explorer 中不起作用
- Javascript null 或 empty 控件不起作用
- 引导程序 3.1.1 轮播控件不起作用
- Birghtcove 无铬视频播放器控件在 Safari 中不起作用
- KeyPress事件在Asp.Net中的图像控件上不起作用
- 多个用户控件实例的相同JavaScript不起作用
- 使用jquery的同一页面中的两个用户控件不起作用
- 当我点击html5中的图像时,播放视频时控件不起作用
- Javascript大小控件在子页中不起作用
- 角作用域和剑道UI控件
- 在角树控件中将数据从父作用域绑定到节点中的元素
- Angularjs自定义表单控件作用域重复