在指令中对$watch进行了一个小实验
performed a small experiment with $watch in a directive
尝试比较不同$watch参数传递之间的差异:
法典:
angular.module('app', [])
.controller( 'someCtrl', [ '$scope', function ( $scope ) {
$scope.someVar = 'a';
}])
.directive( 'dirName', [ function() {
var directive = {};
directive.restrict = 'AE';
var link = function ( scope, element, attrs ) {
console.log('link!');
scope.$watch( 'someVar', function() {
console.log('var-string!');
});
scope.$watch( scope.someVar, function () {
console.log ('var with scope!');
} );
scope.$watch( function () {
return scope.someVar;
}, function () {
console.log('function returns the var!');
} );
}
directive.compile = function ( scope, element, attr ) {
console.log('compile!');
return link;
}
return directive;
}]);
目录:
<body ng-app="app">
<div ng-controller="someCtrl">
<div dir-name>{{someVar}}</div>
<button ng-click="someVar='b'">b!</button>
</div>
加载/解析我们有:
compile!
link! (this parts is quite clear for understanding)
var-string!
var with scope!
function returns the var
点击时:
var-string!
function returns the var!
有人可以解释不同设置类型之间的区别吗?什么是首选/更快/不同的情况/等?
在应用/摘要周期中根据范围评估字符串以检查更改。只需在应用/摘要周期中调用函数以检查更改。因此,传递字符串s
等效于传递类似
function () {
return $scope.$eval(s);
}
传递$scope.someVar
将导致上述情况之一,具体取决于$scope.someVar
的计算结果是字符串还是函数。它不会为 someVar
变量设置监视,除非$scope.someVar
是字符串"someVar"
或返回 $scope.someVar
的函数。
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- jQuery:循环一个具有不同超时值的循环
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 从javascript创建一个列表
- 节点导出返回一个空对象
- 使用clickToggle并在单击另一个元素时关闭元素
- 我可以在json对象中添加一个函数吗
- 使用javascript将动态表从一个html页面打印到另一个html页
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 表追加而不附加最后一个元素
- 我如何找到一个句子中的所有空格并替换忽略它们
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 如何在android中使用phonegap将文件从一个文件夹移动/复制到另一个文件夹
- 使用类从一个标记中双击事件
- Javascript,访问一个主要对象模块模式中的每个对象
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 做了一个javascript小实验,需要你的帮助才能理解意外的结果
- 在指令中对$watch进行了一个小实验
- 尝试实现一个JQuery脚本(未实验)
- 控制台中的神秘 NaN.log.尝试一个简短的物理实验