我想知道是否有人可以帮助我我已经创建了一个新指令,因此我可以在从webServer加载数据时过滤下拉列表。一切正常,我可以使用{{ myValue }}
将值写入HTML页面,我甚至可以在输入上使用ng-model
,并返回值。
但出于某种原因,如果我尝试通过控制器访问变量$scope.myValue
是undefined
?
我创建了一个plunker(不会从webServer加载数据,而只是加载基本的列表值),但这似乎有效,而我的项目没有,我没有得到,因为我从中复制了我的项目!。
如果有人有任何想法,我真的很感激听到他们。
在我的页面上我有
<div search-dropdown text="myText" value="myValue"></div>
指令是
<div class="btn-group searchDropdown">
<button type="button" class="btn btn-default">
<input search-dropdown-input type="text" placeholder="Enter name to search..." ng-model="filterText" ng-change="filter();" />
</button>
<button search-dropdown-toggle type="button" class="btn btn-default dropdown-toggle">
<span class="caret"></span>
<span class="sr-only">Split button!</span>
</button>
<ul class="dropdown-menu" role="menu">
<li ng-repeat="item in items"><a href="javascript:void(0);" ng-click="selectItem($index);">{{ item.name }}</a></li>
</ul>
</div>
答案 0 :(得分:0)
您说您是从webServer加载的,可能是您在将后端数据分配给它之前尝试使用该变量吗?
我建议使用类似的东西:
$scope.$watch("myValue", function (newVal) {console.log(newVal);})
或:
$timeout(function () {console.log($scope.myValue);}, 5000)
这个想法是在后端AJAX请求完成后打印变量值。它将打印正确的值,而不是使用$watch
函数,以及在变量具有预期值后需要对变量执行的操作。
答案 1 :(得分:0)
似乎一切都很好。唯一的区别是我的角度版本。
为了修复我的版本,我使用了一个对象来传递给我的指令而不是两个单独的变量。
所以现在我的指令属性就像这样填充
Text="myObj.text" value="myObj.value"
我想&#34;参考&#34;变量以某种方式丢失了?
之前有过类似的问题,建议这样做。我在这里发帖后才记得。希望这有助于其他人