如果我们初始化为null,angular.js@local-scope属性将显示为未定义
angular.js @local scope property coming as undefined if we initialized as null
我制作了自定义角度指令
<location zipcode="35423" cityname="" statecode=""></location>
并采取
scope: {
zipcode: "@",
cityname: "@",
statecode: "@"
},
该指令的控制者:
controller: function ($scope, $filter) {
$scope.zipcode = "35423" // here i get the values
$scope.cityname = undefined // ?? why?
$scope.statecode= undefined // ?? why?
}
我想要$scope.cityname = ""
事实上,我使用的是mvc应用程序
zipcode="@ZipCode" cityname="@City" statecode="@StateCode"
并且CCD_ 2可能是空
如果作用域属性未定义,则可以将其值设置为""
,例如:$scope.cityname = $scope.cityname || "";
。
我不明白你为什么要这么做,因为""
和undefined
的评估结果都是false。
这似乎是一个范围隔离问题。
发生的情况是,您的指令将使用控制器中的三个值填充其作用域,并且由于您在作用域隔离中使用@
,因此无论是否定义了值,指令都将从控制器中获取值并以一种方式绑定。
由于绑定是一种方式,控制器中的更改将反映到指令中,但指令中对这些值的更改不会反映到控制器中。这意味着,如果您更改指令中的值,例如将cityName设置为Islamabad
,则控制器将不知道此更改,并将保留旧值,如果变量从未初始化,则旧值很可能是未定义的。
如果要双向绑定,请使用=
而不是@
。这样,对这些变量的指令变化将反映在控制器中。
链接到范围隔离文章:创建自定义AngularJS指令
相关文章:
- 带有填充属性的SVG矩形显示在包含元素的上方插入框阴影
- 重写CSS:使用jquery显示none属性
- 对象的属性显示为未定义
- 离子模态未打开(类型错误:无法读取未定义的属性“显示”)
- HTML “标题”属性显示单词“未定义” - 例如.“主页未定义”
- 使剑道 UI 下拉列表将“选择控件”的“标题”属性显示为剑道工具提示
- 内容显示中的 JavaScript 错误“无法设置未定义的属性”显示”
- 动态添加的控件属性显示为 controls=“ ” 而不是控件
- 为什么获胜't我的json对象的`email`属性显示在我的jade模板中
- Angular:如何根据项目的属性显示icon.png
- 如何使用属性显示带有CSS3转换的隐藏元素
- 文本和输入元素以相同的方式追加和给定属性.显示文本,但不显示输入.为什么
- 基于属性显示html
- 修改title属性显示的工具提示
- 使用标签选择图像文件,但有属性显示输入
- 使用使用rel属性显示的模式编辑gridview单元格
- 按数据属性显示列表中的前三项
- 使用数据弹出属性显示 Jquery-ui 对话框
- 使用数据弹出属性显示 UI 对话框
- 检测属性显示从无显示到显示块