为什么我不能在指令html中访问我的控制器的函数?

时间:2014-07-15 13:35:35

标签: javascript angularjs angularjs-directive angularjs-scope

我正在尝试从第三方指令的标记内调用我的控制器中定义的函数。奇怪的是,我可以正常访问常规变量,但功能似乎根本没有出现。

我的控制器的一部分:

$scope.map = {
            control: {},
            center: {
                latitude: 45,
                longitude: -73
            },
            zoom: 8,
            currentMarker:{id:-1, coords: {latitude: 45, longitude: -73}},
            wndoptions:{
              boxClass: 'bubble'
            }            
        };

        [...]

$scope.moveMarkerUp = function(){
          alert('Do things here');
       };

标记:

<div ng-app="App" ng-controller="MapCtrl">
    <input type="button" value="U" ng-click="moveMarkerUp()" ng-show="showWnd"></input>
    <google-map center="map.center" zoom="map.zoom" ng-show="true" draggable="true" control="map.control">
         <window coords="map.currentMarker.coords" show="showWnd" options="map.wndoptions">
                <div >
                    Marker {{showWnd}}
                    <input type="button" value="Up" ng-click="moveMarkerUp()" ng-show="{{showWnd}}"></input>
                </div>
         </window>
         <markers models="markers" coords="'coords'" click="'clk'"></markers>
    </google-map>
</div>

因此,当按下第一个按钮时,函数会按预期触发,但是第二个按钮在窗口标记内没有任何反应,但是当我在这里评估mapshowWnd等变量时,确实显示正确的值。我甚至尝试在地图对象中设置一个函数,但是当它以这种方式打印时,函数变量甚至没有在对象中列出。

1 个答案:

答案 0 :(得分:1)

window指令创建子作用域,并且您的函数存在于父作用域中。尝试像ng-click="$parent.moveMarkerUp()"这样的引用。