gpt4 book ai didi

angularjs - Angular.js 将参数传递给指令

转载 作者:行者123 更新时间:2023-12-05 09:22:04 24 4
gpt4 key购买 nike

我是 Angular 的新手,所以如果这个问题的答案非常基础,请不要感到惊讶。

我试图在一个指令中封装一个 map , map 将有一些自定义行为:我希望它与服务通信以检索与商户相关的所有点。 p>

所以我想将 merchant 作为参数传递给指令:

这是 HTML:

<div ng-app="myApp">
<div ng-controller="Ctrl1">
<p>Ctrl 1: {{merchant1}}</p>
<map merchantDetails="{{merchant1}}"></map>
</div>
</div>

这是javascript:

var myApp = angular.module('myApp', []);

myApp.controller('Ctrl1', function ($scope) {
$scope.merchant1 = "foo"
});

myApp.controller('Ctrl2', function ($scope) {
$scope.merchant2 = "bar"
})
.directive('map', function () {
return {
restrict: 'E',
link: function (scope, element, attrs, controller) {
scope.merchant2 = attrs.merchantDetails;
},
scope: {
merchantDetails: "@"
},
template: 'Ctrl2: {{merchant2}}'
}

});

问题是模板中的 scope.merchant2 永远不会更新。我希望它有“foo”,或者最坏的情况是“bar”,而不是空白。

当我在 Chrome 中调试它时, Controller Ctrl2 初始化永远不会执行。为什么?我希望它在链接阶段之前完成。

如何获取传递给 Ctrl2 的“foo”值?

jsfiddle 可用 here .

最佳答案

您实际上不需要第二个 Controller 。我更新了 fiddler,请检查它是否是你需要的:

https://jsfiddle.net/e7cfcakv/7/

<div ng-app="myApp">
<div ng-controller="Ctrl1">
<p>Ctrl 1: {{merchant1}}</p>
<map merchant-details="{{merchant1}}"></map>
</div>
</div>

var myApp = angular.module('myApp', []);

myApp.controller('Ctrl1', function ($scope) {
$scope.merchant1 = "foo"
});

myApp.directive('map', function () {
return {
restrict: 'E',
link: function (scope, element, attrs, controller) {
scope.merchant2 = scope.merchantDetails;
},
scope: {
merchantDetails: "@"
},
template: 'Ctrl2: {{merchant2}}'
}
});

关于angularjs - Angular.js 将参数传递给指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29099814/

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