【发布时间】:2013-12-05 01:30:00
【问题描述】:
我第一次使用 Angular 版本 1.2.2 并尝试制作一个简单的指令,该指令使用带有 '=' 绑定的隔离范围来传递对象。我之前已经做过几次了,所以我想知道 1.2.2 中是否有一个改变改变了这一点?
这是我的指令:
.directive('vendorSelector', function (VendorFactory) {
return {
restrict: 'E',
replace: true,
scope: { vendorId: '=' },
template: '<select ng-model="vendorId" ng-options="id for id in vendorIds">' +
'<option value="">-- choose vendor --</option>' +
'</select>',
link: function (scope, element, attrs) {
VendorFactory.getVendorIds().then(function(result) {
scope.vendorIds = result;
});
}
}
})
我使用该指令的 HTML 模板如下:
<div class="padding">
<vendor-selector vendorId="someValue"></vendor-selector>
{{ someValue }}
</div>
还有后备控制器:
.controller('AddProductController', function($scope, ProductFactory, AlertFactory) {
$scope.vendorId = 0;
$scope.someValue = undefined;
})
我尝试在 html 模板中同时使用 $scope.someValue 和 $scope.vendorId 作为提供的对象。在这两种情况下,我得到的错误都是Expression 'undefined' used with directive 'vendorSelector' is non-assignable!。我是否遗漏了一些明显的东西来阻止这些值在隔离范围内被双向绑定?
【问题讨论】:
标签: javascript angularjs angularjs-directive angularjs-scope