angularjs指令未使用scope。$ watch进行更新

用户名

我正在尝试根据控制器变量集中输入。它在控制台中正确初始化了打印值= false,并且控制器正在视图中而不是指令中对该变量进行了补全。我使用玉/咖啡或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}}")
潘卡·帕克(Pankaj Parkar)

您应该使用$observeon属性,就像您要在每个摘要中评估插值包含一样,$watch将无法在插值上使用。

$观察

$observe(key, fn);

观察插值属性。在编译之后的下一个$ digest中,观察者函数将被调用一次。每当插值更改时,便调用观察者。

代码

'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
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TOP 榜单

热门标签

归档