无法从指令

时间:2017-02-21 14:40:34

标签: angularjs

我有这个指令

app.directive('countrySelect', function (Country) {
return {
    templateUrl: 'template/directives/countryselect.html',
    restrict: 'E',
    scope: {
        selectedValue: '='
    },
    link: function (scope) {
        Country.success(function (data) {
            scope.countries = data;
        });
    }
}
});

我的模板

<select chosen
    data-placeholder="Country"
    search-contains="true"
    ng-model="selectedValue"
    ng-options="name as country.name for country in countries">
<option value=""></option>
</select>

我已将模型设置为selectedValue但我在尝试console.log时只返回未定义。

这是我使用指令的HTML

<country-select selected-value="custCtrl.editForm.country"></country-select>

和控制台记录变量custCtrl.editForm.country只是给出了undefined。

我想&#34; =&#34;双向数据绑定? 我错过了什么?

谢谢

1 个答案:

答案 0 :(得分:0)

ng-options语法错误。该语法中的第一个术语表示选项值,因此是ng-model将镜像的值。您已经指定了一个名为name的变量,它实际上是未定义的。它应该是country.name

ng-options="country.name as country.name for country in countries"

(第二个country.name指定选项标签,即下拉列表中显示的文字。这不需要与第一个词匹配,但通常会匹配。)

DEMO: Here is a fiddle you can play around with

在其中,您将看到只要模型发生变化,手表就会从控制器和指令登录到控制台。控制器还在HTML中显示所选值。 (我将$scope添加到手表的控制器中,但您在生产中不需要它。)