我试图根据控制器变量来关注输入。它在控制台中正确初始化打印值= false,并且变量由控制器在视图中进行更新,但不在指令中。我正在使用jade / coffeescript或Id创建一个示例,但这几乎就是它:
控制器
$scope.autofocus = false
$scope.somefunction = ->
$scope.autofocus = true
指令。
'use strict'
angular.module('myapp')
.directive 'gsautofocus', ($timeout, $parse) ->
{
link: (scope, element, attrs) ->
model = $parse(attrs.gsautofocus)
scope.$watch model, (value) ->
console.log 'value=', value
if value == true
$timeout ->
element[0].focus()
return
return
}
查看
input(type="text", gsautofocus="{{autofocus}}")
答案 0 :(得分:1)
您应该在属性上使用$observe
,就像您想要评估每个摘要中的插值包含一样,$watch
将无法处理插值。
$observe(key, fn);
观察插值属性。 观察器函数将在下一个$摘要期间调用一次 编译后。然后每当调用观察者时 插值变化。
<强>代码强>
'use strict'
angular.module('myapp')
.directive 'gsautofocus', ($timeout) ->
{
link: (scope, element, attrs) ->
attrs.$observe 'gsautofocus', (value) ->
console.log 'value=', value
if value == true
$timeout ->
element[0].focus()
return
return
}