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