角度链接功能范围未正确更新

时间:2015-07-06 03:48:11

标签: javascript angularjs angularjs-directive

我目前正在将Google的嵌入式地图实施到项目中,并为其创建了角度指令。

我希望能够通过指令的属性更新正在使用的值的URL,但是在更改所选项目后,显示的值始终是当前所选值的后面一个。

这是我的链接功能:

function link (scope, element) {
    makeIFrame(scope, element);

    scope.$on('place-change', function () {
        makeIFrame(scope, element);
    });
}

我的makeIFrame功能:

function makeIFrame(scope, element) {
    element[0].innerHTML = baseURL+scope.name +' '+ scope.zip; 
}

这是问题的解决方案,我只是展示了我将使用的url示例: http://jsfiddle.net/t2GAS/60/

我也想知道在指令中执行这样的任务是否有更好的做法。

我尝试使用模板函数,但它没有访问传递的变量的值,而是尝试解析变量的名称。

编辑:

使用Phil的答案更新了jsfiddle:http://jsfiddle.net/t2GAS/64/

1 个答案:

答案 0 :(得分:2)

更新到最近版本的Angular(1.3+)并将您的指令link更改为使用$scope.$watchGroup ...

scope.$watchGroup(['name', 'zip'], function(values) {
    element.text(baseUrl + values.join(' '));
});

JSFiddle

这样做,您不再需要ng-change上的<select>指令