0
我試圖圍繞Angular指令與隔離作用域並與控制器進行通信。Angular指令:用&符號方法將值傳遞給控制器
我想創建的是一個簡單的可重用搜索組件。這個組件有一個模型值(查詢),並且應該有一些方法來向控制器指示搜索按鈕被點擊。
的index.html
看起來是這樣的:
<searchbox
ng-model="query"
on-search="search()"
></searchbox>
<p>Current search query: {{query}}</p>
的<searchbox>
指令如下:
app.directive('searchbox', function() {
return {
link : function(scope) {
scope.submit = function() {
console.log('Trying to return the query ' + scope.q);
scope.onSearch(scope.q);
}
},
replace : true,
restrict : 'E',
scope : {
'ngModel' : '=q',
'onSearch' : '&'
},
template : ''.concat(
'<form><input ng-model="q" type="text" />',
'<input type="submit" value="Search" ng-click="submit()" />',
'</form>'
)
};
});
和主控制器是這樣的:
app.controller('AppCtrl', function($scope) {
$scope.search = function(query) {
alert('You searched for ' + query);
alert('Search value: ' + $scope.query);
}
});
不幸的是,查詢確實不會出現在控制器中,因此o f search
回調,並作爲$scope
propery。
我已經谷歌了一下,但大多數的答案似乎使用$scope.$eval
的一些變化,或直接調用控制器,這似乎有點像kludge。
一個Codepen上面的例子可以在這裏找到:http://codepen.io/hay/pen/Avwjz
任何幫助將是非常讚賞。
謝謝!愚蠢的是,我只是混淆了「範圍」對象中的鍵和值屬性。 – Husky 2014-08-28 08:03:52