0
我的指令有一個屬性id-model
,用於將數組傳遞給指令。指令控制器應該使用該數組作爲參數執行一個函數。我可以訪問我的控制器中的屬性並記錄數組,但我的功能從不運行,我不知道爲什麼。
如果我不使用該屬性,並將placesFact.getDetails(idModel)
更改爲placesFact.getDetails($scope.model)
一切正常,但我希望有更多的指令靈活性。
*更新: 要澄清的placesFact.getDetails()
方法,它看起來了一個地方的ID谷歌地方信息並返回結果爲一個承諾。它已經過測試並且工作正常。
指令
.directive('gPlaces', function() {
return {
restrict: 'E',
scope: '@',
link: function(scope, element, attrs) {
scope.tempUrl = attrs.tempUrl;
},
controller: function($scope, $attrs, placesFact) {
var idModel = $attrs.idModel;
$attrs.$observe('idModel', function(value) {
idModel = value;
console.log(idModel); // This logs the array
placesFact.getDetails(idModel).then(function(results) {
console.log(results); // This logs nothing
$scope.places = results;
});
});
},
template: '<div ng-include="tempUrl"></div>'
}
})
控制器
angular.module('myApp').controller('PlacesCtrl', function($scope) {
$scope.model = [
'ChIJR4dOl_hYwokRApSCaQiBidk',
'ChIJv-Ghof5YwokRMtWLEV12hJI',
'ChIJjyX2GqRZwokRT-gdcGoPuSI',
'ChIJqSurReFYwokRec7JFACToas',
'ChIJn8dCo-NYwokRC_4nRUQWbNE',
'ChIJszmN0-JYwokRk-XCDbO6X_Y',
'ChIJt4TrE_1YwokRVedrKxaqYoo',
'ChIJiW0WvwJZwokRIWyzCvo3o5k',
'ChIJsS1xLQJZwokRGfXJPMwXA1A',
'ChIJI5xCX6NZwokR3jdSQwsw2DI',
'ChIJuVE5aLtZwokR-K75OxUEtzI',
'ChIJ7R4tgLtZwokRM8thlhlzE2o',
'ChIJxbWTG_pYwokRPgtFVKi-Cuc',
'ChIJKZVnwFVYwokRgDw_sxw3NCo',
'ChIJw_JUgvhYwokR91EMxVDhB8M',
'ChIJZ3oXOVZYwokRNnAXaDRKAzg',
'ChIJP9idxlZYwokRLH-I1mNfzYQ',
'ChIJndGJ5FNYwokRricJvhT0t1s',
'ChIJhZ0Sn1ZYwokRRA1MZJZHrHA',
'ChIJhTdv51NYwokR7V105uVzf8g',
'ChIJvfVwDFJYwokRtWobbwOMEVM',
'ChIJpY9Tg01YwokRCr_aQpDrqgk',
'ChIJ-fRuLFdYwokR0KKQ6Av_WhQ',
'ChIJh-DIsE1YwokRhuFrdM1ge5E'
];
});
查看
<g-places temp-url="pages/places/multiTemp.html" id-model={{model}}></g-places>
您不應該依賴'var idModel = $ attrs.idModel',因爲該屬性在控制器運行時不插值。如果它有效並且$ attrs。$ observe沒有,那麼你做錯了什麼,除了你知道'placesFact.getDetails'是如何工作的。順便說一下,'scope:'@''語法也是錯誤的。 – estus
'getDetails'的實現是什麼?如果它是'$ resource',你需要使用'placesFact.getDetails(idModel)。$ promise.then(function(results){' – Kamil
@estus @Kami我編輯了這個問題以澄清'placesFact.getDetails'這個是我第一次嘗試一個指令,所以如果我關閉了某些東西,就可以原諒我。從我讀的內容看,'scope:'''語法應該是什麼,我認爲這是適當的 –