gpt4 book ai didi

angularjs - Angular 指令 - 当另一个指令也是隔离范围时更新父范围

转载 作者:行者123 更新时间:2023-12-04 20:08:18 24 4
gpt4 key购买 nike

我编写了一个需要更新父作用域的 Angular 指令。

angular.module('app').directive('googlePlace', function () {
return {
restrict: 'A',
require: 'ngModel',
link: function ($scope, element, attributes, model) {

$scope.property1 = 'some val';
$scope.property2 = 'another val';
$scope.$apply();

};
});

但在我的 Controller 中,我这样做:
MyCtrl = function($scope){
$scope.doSave = function(){
// do some logic
console.log($scope.property1);
console.log($scope.property2);


}

}

doSave运行, 我在控制台中收到未定义的值 .如何在不隔离范围的情况下将其应用于父范围。我没有这个选项,因为同一元素上的另一个指令隔离了范围。

最佳答案

它应该工作。默认情况下,如果您没有在指令中指定范围,它将使用父范围,因此应设置 property1 和 property2。尝试将指令中的范围设置为 false。作为旁注,你正在做的事情不是一个好习惯。最好隔离范围并将属性添加为属性。这样你就会有很好的封装。

例如

angular.module('app').directive('googlePlace', function () {
return {
restrict: 'A',
require: 'ngModel',
scope: {
property1: '=',
property2: '='
}
link: function ($scope, element, attributes, model) {

//here you have access to property 1 and 2

};
});

function MyCtrl($scope) {
$scope.property1 = null;
$scope.property2 = null;

$scope.doSave = function(){
// do some logic
console.log($scope.property1);
console.log($scope.property2);
}
}

还有你的 html
<div ng-control="MyCtrl">
<div google-place property1='property1' property2='property2'></div>
</div>

关于angularjs - Angular 指令 - 当另一个指令也是隔离范围时更新父范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22750051/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com