为什么范围$手表坏了
why scope.$watch is not working?
我有angularjs指令和模板,它由两个标签组成——input和空列表。我想要的是观察第一个输入标签的输入值。当指令初始化时,$watch()
方法被调用一次,但仅此而已。输入值的任何更改都是静默的。我想念什么?
这是我的垃圾
这是代码:
.directive('drpdwn', function(){
var ref = new Firebase("https://sagavera.firebaseio.com/countries");
function link(scope, element, attrs){
function watched(){
element[0].firstChild.value = 'bumba'; //this gets called once
return element[0].firstChild.value;
}
scope.$watch(watched, function(val){
console.log("watched", val)
}, true);
}
return {
scope:{
searchString: '='
},
link: link,
templateUrl:'drpdwn.html'
}
})
编辑:
如果我在链接函数中调用$interval()
,它将按预期工作。这是故意的行为吗?
它不会被调用,因为从来没有在作用域上触发过摘要。
试试这个,使用ng模型:
http://plnkr.co/edit/qMP5NDEMYjXfYsoJtneL?p=preview
function link(scope, element, attrs){
scope.searchString = 'bumba';
scope.$watch('searchString', function(val){
console.log("watched", val)
val = val.toLowerCase();
val = val.replace(/ */g,'');
var regex = /^[a-z]*$/g;
if (regex.test(val)) {
scope.searchString = val;
// TODO something....
}
}, true);
模板:
<input class="form-control" ng-model="searchString" id="focusedInput" type="text" placeholder="something" />
<div></div>
您正在观察程序函数中设置所需的值。
function watched(){
element[0].firstChild.value = 'bumba'; //this gets called once
return element[0].firstChild.value;
}
与的返回值基本相同
function watched() {
return 'bumba';
}
因此,观察者将始终返回相同的值。
如果要初始化该值。在观察者之外做:
element[0].firstChild.value = 'bumba'; //this gets called once
function watched(){
return element[0].firstChild.value;
}
相关文章:
- "工具提示"jQuery插件坏了
- 我的按钮坏了
- 节点JS:时间机器坏了——timekeeper.travel不做时间旅行
- HTML/JavaScript:为什么不'我的纽扣坏了
- 我的素数函数坏了,但我没有;我不知道为什么
- Uglifier是不是弄坏了我的睡衣
- 我升级了Knockout.js,现在我的模板坏了
- 为什么范围$手表坏了
- 所有的javascript都 ajax.aspnetcdn.com/ajax/ 坏了?打破所有外部引用?自周五以来
- 角度控制器功能坏了
- 谷歌可视化图表API示例坏了,如何修复它们
- 将Facebook应用程序移动到新服务器,现在它坏了
- 为什么我的代码坏了
- 野生动物园浏览器中的后退按钮坏了
- 砌体坏了(可能是经典)
- 旋转相机后,Three.js的skybox似乎坏了
- 验证不是't工作,现在我的网站也坏了
- 什么'It’我的石头剪刀坏了
- Gulp手表坏了
- angularJS为什么是$scope ?我的手表坏了