【发布时间】:2015-11-21 18:41:55
【问题描述】:
我想更新指令范围
我的 filterconditions.js 文件
SCAApp
.directive('filtercondition', ['ngDialog',
function (ngDialog) {
/**
* @name directive.searchdrop
* @description searchdrop element
* @param {object} field, required and options
* @param {object} value, defaul value of the field, could be null
* @param {string} inputClass, optional, optional css class
* @returns {object} directive
*/
return {
restrict: 'A',
replace: true,
scope: {
conditionsinput: "=",
tables: "=",
operatorsinput: "=",
treeinput: "=treeinput"
},
templateUrl: '../../Scripts/app/shared/directives/filterconditions/partials/filterconditions.html',
link: function (scope) {
scope.$watch('tree', function () {
scope.treeinput = scope.tree;
});
scope.generateUid = function () {
var d = new Date();
var uid = d.getTime();
return uid;
};
scope.conditions = scope.conditionsinput;
//scope.tables = scope.tablesinput;
scope.operators = scope.operatorsinput;
scope.tree = scope.treeinput;
}
}]);
我的html页面
<div filtercondition conditionsinput="conditions" tables="tables" operatorsinput="operators" treeinput="tree"></div>
$scope.tree = [{ nodes: [], fields: [], id: $scope.generateUid(), condition: $scope.conditions[0], visibility: true, selectColumns: [] }];
在这种情况下,scope.tree 会更新,但请参阅
dataFactory.get("/BusinessView/GetBusinessViewById?applicationId=" + $scope.currentAppId + "&viewId=" + $scope.$stateParams.viewId + "&objectId=" + $scope.$stateParams.formId)
.then(function (result) {
$scope.tree =[{ nodes: [], fields: [], id: $scope.generateUid(), condition: $scope.conditions[0], visibility: true, selectColumns: [] }];
});
在上述情况下,指令中的 scope.tree 没有更新,请给出解决方案
【问题讨论】:
-
为什么你的指令中有
treeinput: "=treeinput"而不是treeinput: "="?我认为你也不需要$watch("tree")。
标签: javascript html angularjs angularjs-directive